公元1世纪的时候普鲁塔克提出一个问题:如果忒修斯的船上的木头被逐渐替换,直到所有的木头都不是原来的木头,那这艘船还是原来的那艘船吗?

忒修斯之船

很多哲学家都回答论证过这个问题,其中就包括著名哲学家思想家亚里士多德,苏格拉底,柏拉图。我们来看一看亚里士多德的论证方法和他的结论:

亚里士多德

亚里士多德认为可以用描述物体的四因说解决这个问题。构成材料是质料因,物质的设计和形式是形式因,形式因决定了物体是什么。基于形式因,忒修斯之船还是原来的船,因为虽然材料变了,但船的设计——形式因——没有变。从这个角度看赫拉克利特的河流问题,则两次踏入的是同一条河流,因为河流的形式因没有变。事物的目的决定了其目的因。忒修斯之船的目的在神话中是装载和运输,在现实中的目的是证明和纪念忒修斯,虽然材料变了,但目的没有变。

那么,作为一个程序员,我们该如何看待这个问题呢?这里我们不妨先来为忒修斯之船定义一个对象:

/**

* 忒修斯之船

*/

public class TheseusShip {

private Object hull; //船壳

private Object deck;//甲板

public void transport(){

//运输功能

}

// getter setter

}

接下来,我们来创建一个对象分别代表初始的船和改变之后的船:

TheseusShip theseusShip = new TheseusShip(); //初始之船

theseusShip.setHull("船壳1");

theseusShip.setDeck("甲板1");

接下来对船的零件进行替换:

TheseusShip theseusShip2 = theseusShip;

theseusShip2.setHull("船壳2");

theseusShip2.setDeck("甲板2");

进行到这里想必大家已经明白了,无论我对初始的船做出任何改变,它都还是原来的船,因为下面的结果始终为True:

System.out.println("Is the ship of Theseus change: " + (theseusShip2 == theseusShip));

科学

所以,以一个程序员的眼光来看忒修斯之船这个问题,答案是还是原来的船。在程序员的眼中,只有对或者错。并不存在什么哲学问题,毕竟一旦哲学了,程序运行可能就要抛异常了。

欢迎关注我的公众号“java工会”,一起交流技术

java ship_用Java对象来解答世界悖论难题“忒修斯之船”相关推荐

  1. Java基础:常见对象

    第一讲   API 一.API概述 1.API(Application Programming Interface) :应用程序编程接口 2.编写一个机器人程序去控制机器人踢足球,程序就需要向机器人发 ...

  2. java 日期calendar_java时间对象Date,Calendar和LocalDate/LocalDateTime

    一.简介 Date:java.util.Date包,包含日期,时间,毫秒数. Calendar:java.util.Calendar包,abstract修饰,Date的很多方法已经过时迁移到了Cale ...

  3. Java 基础——类和对象

    Java作为一种面向对象语言.支持以下基本概念: •多态 •继承 •封装 •抽象 •类 •对象 •实例 •方法 •消息解析 本节我们重点研究类与对象的概念. 对象:对象是类的一个实例,有状态和行为.例 ...

  4. java dozer map转对象_对象转换利器之Dozer

    在Java的世界中,经常会涉及到需要在2个对象中进行转换,比如说: 调用SOAP Web服务,需要把自己的Domain对象转换为Soap服务的Jaxb对象请求, 在分层级SOA架构中,2个层级之间Do ...

  5. java 网格包,求大神解答:JAVA网格包布局管理器小程序问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 为什么我在这个程序上加入了一个Container对象就出问题了,求解答,要如何改: package A; import java.awt.*; impor ...

  6. Java面向对象-01-类和对象

    一.面向对象概述 一.面向对象概述 在程序开发初期人们使用结构化开发语言,但是随着时间的流逝,软件的规模越来越庞大,结构化语言的弊端也逐渐暴露出来,开发周期被无休止的拖延,产品的质量也不尽如人意,人们 ...

  7. Java基础06-面向对象(1)【类与对象】

    面向对象(1) 1 学习主线 #mermaid-svg-B2JajRXUdPvMVfyh .label{font-family:'trebuchet ms', verdana, arial;font- ...

  8. 7.0_[Java 面向对象]-类和对象

    ################################################## 目录 面向对象扫盲 万物皆对象 分类思想 对象的属性与方法/实例的特征和行为 如何在 Java 中 ...

  9. 我的世界java老崩溃怎么办_我的世界渲染崩溃怎么办

    我的世界渲染崩溃解决方法 是尝试安装Optifine,或者将Forge降级至14.23.4.2759版本之前.显然是mw_2.0-0.4.4.6_mc1.12.2.jar的问题.代码问题,尝试下载新本 ...

  10. 我的世界java服核心下载_我的世界java版

    我的世界java版手机下载是一款高自由度的沙盒模拟建造游戏,这个版本是Java版本,增加了很多不同的游戏生物,还有超多好玩的游戏内容,感兴趣的玩家们千万不要错过了,快来下载这款我的世界java版1.1 ...

最新文章

  1. 使用docker搭建一个elasticsearch(5.4)的基础环境
  2. ElasticSearch ected map for property [fields] on field [subject_id] but got a class java.lang
  3. 快速记忆python函数-【速学速记】Python 列表生成式的进化:生成器
  4. 前端跨域问题解决方案汇总
  5. 【洛谷 - 快来签到】(数学,公式,溢出爆longlong的处理)
  6. 数据完整性(python 版)
  7. spark学习-70-源代码:Endpoint模型介绍(2)-启动流程
  8. 服装企业的信息管理及主要对象(转)
  9. C++序列容器存储智能指针
  10. Xv6 traps and system calls
  11. python微信头像_Python帮你微信头像任意添加装饰别再@微信官方了
  12. 将移动硬盘变为与系统硬盘等同的存在
  13. 蜂窝移动终端的Cat指的是什么?
  14. w7系统事件日志服务器,win7系统事件日志服务4201错误的解决方法
  15. 通过微信开发测试号进行微信登录
  16. 对摄影术语(及其在光线追踪的应用)的简要概括
  17. 深入理解数据库当中的聚合函数
  18. localhost和127.0.0.1有什么区别?
  19. 微盟股价快速飞升的背后:WOS系统将驱动长效增长
  20. 机器学习经典算法总结之线性回归

热门文章

  1. 罗技F710 无线手柄在ROS下的配置使用总结
  2. CRX 4 Chrome
  3. Laya Tween循环
  4. wamp中为何php文件需要下载,配置WAMP后,浏览器输入默认的php文件名都直接下载该文档...
  5. Ubuntu镜像软件下载
  6. css pseudo elements,CSS 伪元素 (Pseudo-elements)
  7. 万字拆解伊利:84天从0到千万GMV,传统巨头在抖音电商的“快与慢”
  8. 2013年计算机毕业生流向,2013年计算机专业应届毕业生自我鉴定
  9. 【Lua基础系列】之热更新
  10. 国培计算机网络技术培训心得,2017国培学习心得体会及感受