Ble*_*eek 12 c# java delegates
Sun的Java gurunaths(nathaनाथ= sanskrit for deity-master-protector)应该屈服于接受代表的必要性并将其草拟为Java规范.
在C#中,我可以将一个方法作为委托作为委托引用,而不需要因为我需要在Java中传递一个方法来创建一个类.
是什么原因导致它不必要(除了引用笨拙的使用一个全新的类为此目的)或不利的是Sun决定不用Java?创建类或匿名实现接口有哪些优势超过代理?我什么都想不到,可以吗?
Ita*_*man 15
[次要编辑]
首先我要说的是,我不反对或赞成向Java添加委托.我只是在解释背景.
首先,Sun的Java团队传统上比语言的演变更保守(与C#团队相比).
其次,将委托构造添加到Java中可能需要引入新的关键字,例如:"delegate".这将破坏存在名为"delegate"的变量的现有代码.
第三,这种设计原则被称为"单一选择原则" http://en.wikipedia.org/wiki/Single_choice_principle.当应用于语言设计时,它意味着程序员应该只有一种明显的方法来实现某些东西.或者,换句话说,多种选择是有风险的.将代理引入Java将违背这一原则,因为他们的行为可以通过匿名类来实现.
[当然,这个原则不应该从字面上理解.如果是那时我们将使用一台好的旧图灵机进行编程.我想太阳队员认为代表们不会构成超过单一选择违规的好处]
Cha*_*tni 15
以下是Tom Ball对微软提议将它们添加到Java以及Sun拒绝它们的原因.
IMO,Java应该在十二年前关闭.吉拉德·布拉查(Gilad Bracha)主张关闭,没有人听.用他自己的话说:
我个人主张自1997/98年以来增加封闭.当我回忆起当时的反应时,我的血压仍然明显上升:"我们的客户不是要求它,所以为什么要添加呢?".
悲伤,但是真的.
通过不将委托的概念引入Java,他们使语言更简单.就像没有属性,索引器,....
(顺便说一下,使用更简单的语言并不一定更简单;可能他们应该添加代理,但这不是他们做出设计决策的方式)