公孙龙说:“白马非马”。
当然,这可以理解成,“白马“和“马“不是全同的概念,白马是一种马。
但是,我要证明,白马连“一种马”都不是!
=========== 我是严肃的分割线 ============
首先,要明确,什么是“白马”。我们可以定义:
引用
定义:如果一匹马身上的毛都是白的,那么这匹马可以称为“白马“。
姑且认为是全白的吧,也认为我们在生活中经常可以找到这样的马。类似的,我们可以定义“黑马”、“枣红马”等等。
对于任何一匹马,我们可以从这匹马上揪下一些毛。没问题吧。
对于任何一匹吗,我们可以给这匹马添加一些毛。假设我们可以这样做吧,加上一些毛仍然是那匹马。
随便拿一匹马(不管颜色),再拿一根黑毛,加在这匹马上,得到的仍然是马。
根据李氏替换原则,我们把这匹马换成一匹白马,我们也可以往上添加一些黑毛。
但是,我们不能给他添加黑毛,因为一旦添加了,得到的就不是白马了!
这不是有问题吗,凡是马都能往上边添加黑毛,白马是马,为什么给白马加上黑毛以后,就不是白马了呢?
——+——~~#¥+@%*¥(@ 我是华丽的分割线 @(¥*%@+¥#~~——+——
Java程序员可以这样编程序:
package baima;
import java.util.*;
class Fur {}
class BlackFur extends Fur {}
class WhiteFur extends Fur {}
interface Horse {
List<Fur> getFurs();
}
interface WhiteHorse extends Horse {
List<WhiteFur> getFurs();{ // ERROR: The return type is incompatible with Horse.getFurs()
}
可惜Java不允许你这样定义“白马“。Java认为,List<WhiteFur>不是List<Fur>的子类。
如果你了解Java的“协变类型”,你会想这样定义:
interface Horse {
List<? extends Fur> getFurs(); // OK
}
interface WhiteHorse extends Horse {
List<? extends WhiteFur> getFurs(); // OK
}
编译正确。
然后我们试试:
class ConcreteWhiteHorse implements WhiteHorse {
private List<WhiteFur> furs = new ArrayList<WhiteFur>();
@Override
public List<WhiteFur> getFurs() {
return furs;
}
}
public class BaimaTest {
public static void main(String[] args) {
WhiteHorse myHorse = new ConcreteWhiteHorse();
List<WhiteFur> furs = myHorse.getFurs(); // ERROR: Type mismatch: cannot convert from List<capture#1-of ? extends WhiteFur> to List<WhiteFur>
furs.add(new WhiteFur());
}
}
编译通不过。Java不允许从List<? extends WhiteFur>到List<WhiteFur>的转换。
如果我们这样:
public class BaimaTest {
public static void main(String[] args) {
WhiteHorse myHorse = new ConcreteWhiteHorse();
List<? extends WhiteFur> furs = myHorse.getFurs();
furs.add(new WhiteFur()); // ERROR: The method add(capture#2-of ? extends WhiteFur) in the type List<capture#2-of ? extends WhiteFur> is not applicable for the arguments (WhiteFur)
}
}
furs是List<? extends WhiteFur>型的,不能添加WhiteFur类型的元素。
看样子,不进行强制类型转换,总是会出错的。
我们这样呢?
public class BaimaTest {
public static void main(String[] args) {
WhiteHorse myHorse = new ConcreteWhiteHorse();
List<WhiteFur> furs = (List<WhiteFur>) myHorse.getFurs(); // WARNING: Unchecked
furs.add(new WhiteFur());
Horse myHorseAgain = myHorse;
List<Fur> fursAgain = (List<Fur>) myHorseAgain.getFurs(); // WARNING: Unchecked
fursAgain.add(new BlackFur());
for (WhiteFur wf : myHorse.getFurs()) { // java.lang.ClassCastException
System.out.println("This is a '"+wf.getClass().getSimpleName()+"'");
}
}
}
看样子没问题吧,编译也通过了。我们成功地给一只白马增加了一根黑毛。你在想,为什么不能呢?白马也是马,马可以加黑毛,白马为什么不能加黑毛呢?
for循环中,试图把myHorse.getFurs()中的成员赋给wf。这一行连警告都没有,因为编译器认为myHorse.getFurs()本来就是List<WhiteFur>型的,当然可以赋值给WhiteFur型的wf呀。
但是,运行时出错。第一根毛是白毛,没错。但是,第二根是黑毛,赋给wf时,类型转换失败。
引用
This is a 'WhiteFur'
Exception in thread "main" java.lang.ClassCastException: baima.BlackFur cannot be cast to baima.WhiteFur
at baima.BaimaTest.main(BaimaTest.java:41)
.......................我是无奈的分割线......................
好了,你说,白马到底是不是马呢?
参考:http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf
分享到:
相关推荐
解释:白马非马是中国古代文学中常见的典故,表达了名家的逻辑辩证特点。 知识点19: 古人的婚礼在什么时间举行? answer:黄昏 解释:古人的婚礼在黄昏举行,是中国古代礼仪中的一部分。 知识点20: “近朱者赤...
知识点:白马非马是一个中国古代典故,体现了名家的逻辑辩证思想。 19. 古人的婚礼在什么时间举行? 答案:傍晚 知识点:古人的婚礼通常在傍晚举行。 20. “近朱者赤,近墨者黑”所蕴含的道理和下列哪句话最相似...
18. 逻辑命题:“白马非马”错误在于割裂了个性与共性的关系。 19. 活动安排:同类活动相邻,最早抽奖安排在周三,活动仍可进行。 20. 人的能力:工作意愿是连接效能和潜能的关键,影响执行力。 这些知识点虽然...
18. 名家辩证法:“白马非马”体现了名家的逻辑辩证思想。 19. 古代婚礼习俗:婚礼通常在傍晚举行。 20. 成语寓意:“近朱者赤,近墨者黑”与“蓬生麻中,不扶而直”有相似道理。 21. 儒家经典:“天时不如地利,...
17. 名家特点:"白马非马"的典故表达了名家注重逻辑辩证的特点(选项A),这是公孙龙的辩论命题。 这些题目展现了中国国学的广泛性和深度,包括诗词、历史、文学、礼仪、艺术等多个领域,是了解和学习中国文化的...
这一轮反驳是通过类推比照,试图证明孔穿的立场存在逻辑不一致。 然而,公孙龙的辩论虽然犀利,但也有"暗渡陈仓"的痕迹。一方面,他将孔穿的"请去此术"误解为"教",混淆了请求与教授的概念。另一方面,他在论证中将...
"白马非马"是名家的代表性论点,探讨了概念的相对性和具体性。 19. 古代婚礼的时间: 古代婚礼通常在傍晚举行,称为"昏礼"。 20. 成语与哲学观念: "近朱者赤,近墨者黑"强调环境对人的影响,意味着接近好人会...
17. 名家逻辑思维:“白马非马”体现了名家注重逻辑辩证的特点。 18. 婚礼的时间安排:古代婚礼通常在傍晚举行。 19. 与环境关系的比喻:“近朱者赤,近墨者黑”与“蓬生麻中,不扶而直”都强调环境对人的影响。 ...
2. 矛盾理论:公孙龙的“白马非马”之说涉及到矛盾的普遍性和特殊性关系。正确理解应是,矛盾的普遍性和特殊性是相互联结的,不能割裂开来。 3. 词语关系:分析“表扬:赞扬:颂扬”和“军事:军队:军人”等词组的关系...
13. 公孙龙与白马非马:公孙龙是战国时期的哲学家,提出了“白马非马”这一逻辑论证。 14. 《孙子兵法》:孙武所著,是兵学圣典,对后世军事思想有很大影响。 15. 曹操与望梅止渴:曹操在征讨张绣时,运用...
侗族大歌是一种复调音乐形式,具有独特的“众低独高”合唱方式,这是罕见的民间音乐现象,证明中国也有复调音乐的传统。 2. 区域发展:"统筹区域发展"的实质被描述为促进不同地区之间的平衡发展,不仅仅是鼓励沿海...
- 公孙龙的“白马非马”观点是哲学上的一个经典例子,涉及到逻辑中的矛盾同一性和特殊性。题目中提到的错误在于割裂了矛盾普遍性和特殊性的关系,即忽视了共性与个性的统一。 4. 商业伦理与论证有效性: - 这道...
8. **辩证法与矛盾**:“白马非马”割裂了矛盾的普遍性和特殊性,而辩证法认为事物既有普遍性又有其特殊性。矛盾的两种基本属性是同一性和斗争性,它们共同推动事物的发展。 9. **世界的统一性**:世界的统一性在于...
9. 白马非马:探讨一般与个别的关系,反对割裂它们之间的联系。 10. 城门失火,殃及池鱼:强调事物间的普遍联系。 11. 千里之堤,溃于蚁穴:体现量变与质变的辩证关系,微小的变化可能导致重大后果。 12. 塞翁失马,...
5. **辩证法思想**:第五题检验了对辩证法的理解,其中A、B、C项体现了矛盾的对立统一、转化和相互依存,而D项“白马非马”则违反了这一原则。 6. **管理幅度**:第六题讨论了组织结构中管理幅度的影响因素,当工作...
4. **诡辩与矛盾的普遍性与特殊性**:“白马非马”的论断,公孙龙的诡辩割裂了矛盾的普遍性和特殊性之间的联系,白马是马的特殊性,也是马的普遍性(马的共性)的体现。 5. **民生工程与矛盾处理**:建设民生工程时...
18. 名家思想:名家注重逻辑辩证,如“白马非马”的辩论。 19. 中国八大菜系:不包括赣菜系,其他分别是鲁菜、川菜、粤菜、苏菜、浙菜、闽菜、湘菜。 20. 语录道理:“近朱者赤,近墨者黑”与“蓬生麻中,不扶而直”...
- "白马非马"是名家公孙龙提出的典故,体现了逻辑辩证法的特点。 16. 婚俗文化: - 古人的婚礼通常在傍晚举行,称为黄昏礼。 17. 诗词理解 - 诗词寓意: - "近朱者赤,近墨者黑"比喻环境对人的影响,与"蓬生麻...
1. 哲学部分:辩证法思想的考察,例如选项中的“白马非马”悖论,体现了对矛盾普遍性与特殊性的理解。 2. 计算机科学:强调计算机的主要功能是实现高速运算,这是计算机区别于其他设备的核心能力。 3. 经济决策:...
5. **名家** - 公孙龙(GONG SUNlong):名家以辩论和逻辑推理见长,公孙龙的“白马非马”论点体现了他对语言和逻辑的精妙运用。 6. **纵横家** - 苏秦(SU QIN):纵横家关注国际关系和外交策略。苏秦提出的纵横...