我多年来一直在编写.NET软件,但已经开始涉足Java了。虽然语法类似,但方法通常不同,所以我要求在这些概念翻译中提供一些帮助。
属性
我知道属性只是抽象的get_ / set_方法 - 在C#中是相同的。但是,通常接受的命名约定是什么?你是使用带有底码的'get_'还是只是'获得'。
构造
在C#中,自动调用基础构造函数。这在Java中也是如此吗?
事件
与属性类似,.NET中的事件是抽象的add_ / remove_ / fire_方法,它们对Delegate对象起作用。 Java中是否存在等价物?如果我想使用某种订阅者模式,您只需使用Invoke / Run方法定义一个接口并收集对象,或者是否对此模式有一些内置支持?
更新:还有一张地图:
字符串格式
是否有与String.Format等效的对象?
答案 0 :(得分:3)
回答您的具体问题:
<强>属性强>
按照惯例,Java使用“get
”或“set
”,后面跟上驼峰情况下的变量名。例如,“getUserIdentifier()
”。布尔经常使用“is
”代替“get
”
<强>构造强>
在Java中,首先调用超类构造函数,然后在类型层次结构中向下移动。
<强>事件强>
按照惯例(这是你最不同意的......不同的库会略有不同),Java使用名为“addEventTypeListener(EventTypeListener listener)
”和“removeEventTypeListener(EventTypeListener listener)
”的方法,其中EventType是事件类型的语义名称(如MouseClick for addMouseClickListener),EventTypeListener
是定义接收器上可用方法的接口(通常是顶级) - 显然这些引用中的一个或多个基本上是一种“火”的方法。
此外,通常会定义一个Event类(例如,“MouseClickEvent
”)。此事件类包含有关事件的数据(可能是x,y坐标等),通常是“fire”方法的参数。
答案 1 :(得分:3)
Java from a C# developer's perspective
Dare Obasanjo用版本2更新了他原来10岁的文章: C# from a Java Developer's Perspective v2.0
虽然对你而言却相反:)
答案 2 :(得分:1)
维基百科在这里有一个很好的深度比较:http://en.wikipedia.org/wiki/Comparison_of_C_Sharp_and_Java
答案 3 :(得分:1)
java中的bean属性之前是get后跟以大写字母开头的bean名称。例如,属性'color'将与方法'getColor()'和'setColor(int color)'相关联(假设属性为int类型)。布尔属性有一个特殊情况,getter将被称为'is'......如'isWhite()','isBlack()'。二传手保持不变。
在java中创建类时,将按顺序调用其所有父类构造函数,在子元素之前调用父类。
Java中的事件特定于给定的事件模型,而不是该语言的核心部分。检查Swing或SWT的文档,以获取有关这些GUI工具包的事件模型的信息。
答案 4 :(得分:0)
Sun's Code Conventions是Java做事和命名的好方法。
答案 5 :(得分:0)
财产获取者和制定者可以按照您希望的任何命名惯例,或者您的组织已经标准化。一个好的命名约定只是那些使用/看到它的人之间的共同点。也就是说,Java社区中的大多数人都使用'getSomething / setSomething'作为getter和setter的命名约定。
自动调用基础构造函数,就像C#。