C#中的属性的语法糖:
private int x;
public int X{
get { return x; }
set { x = value; }
}
或只是
public int X{ get; set; }
我在java中删除了逐字字符串... @“C:\ My Documents \”而不是“C:\\ My Documents \\”
您是否同意Java需要更多“糖”?任何人都知道下一个Java版本中会有糖吗?
答案 0 :(得分:15)
“句法糖导致分号癌症。”
- Alan Perlis。关于编程的箴言。
答案 1 :(得分:14)
听起来像你想要Groovy ...显然属性正在进行中,虽然不是在Java 7中(因为@erickson在评论中帮助纠正了我)。
Groovy确实有nice string sugar。
答案 2 :(得分:12)
虽然我不一定同意Java的哲学,但我认为在Java中加入大量语法糖会违背其理念。 Java应该是一个非常简单,易于推理的语言,只有很少的结构,在编程社区中是最低的共同语言通用语言。这主要是对C ++复杂性的反应。除了所需要的(主要是垃圾收集)之外,它应该是非常少的“魔法”,以使其成为一种记忆安全的语言。
如果你想用一种性能相当高的静态类型语言来获取更多的糖等,我会说Java对你来说是错误的语言。你可能最好只使用C#,或者D。
答案 3 :(得分:6)
我在过去几年中也在Java和C#中开发,并且发现C#在表达力和强大的语言结构方面是一种优秀的语言。 Java语言没有像C#那样经历相同程度的更改和更新,至少没有达到相同的速度。我仍然不一定意味着Java应该大幅更新,但我们需要在Java平台上使用功能强大且富有表现力的静态类型语言。我认为Scala将发展成这种替换语言,当普通Java不切割它时,Java开发人员可以切换到这种语言。
C#是一种非常出色的语言;这些天可能是“最好的”静态类型语言,但Java在我看来仍然是一个优越的平台。我喜欢Java平台,我喜欢C#语言。
答案 4 :(得分:4)
根据Mark Reinhold在Devoxx 2008上的演讲,Java 7中不会将属性支持添加到Java中。
http://hamletdarcy.blogspot.com/2008/12/java-7-update-from-mark-reinhold-at.html
有关Java 7创意中的属性的更多信息:
答案 5 :(得分:3)
虽然属性很好,但它们不是java。我认真地认为javabean规范很久以前关闭了那扇门。我认为需要更清晰的语法糖案例:
答案 6 :(得分:3)
如果我再次将java用于任何大型文件,它将作为另一个编译器的输出语言。
答案 7 :(得分:2)
那是oldschool C#。现在是
public int X { get; set; }
答案 8 :(得分:1)
糖对你的牙齿有害。句法糖对你的大脑有害。
答案 9 :(得分:1)
这不是完全必要的。
一个简单的编辑器宏可以工作:
prop int x - >
private int x;
public int getX(){
return x;
}
public void setX(int val){
x = val;
}
编辑:(回应评论)
这比下面的可读性更低:
private int x;
public int X{
get { return x; }
set { x = value; }
}
答案 10 :(得分:1)
我写了一些注释(以及一个注释处理器)来帮助这一点。
请参阅http://code.google.com/p/javadude/wiki/Annotations
例如:
@Bean(
properties={
@Property(name="name", bound=true), // String is default type
@Property(name="age", type=int.class, bound=true)
}
)
public class Foo extends FooGen {}
这会生成包含字段和get / set方法的FooGen,以及绑定它们(这是可选的)。您还可以使用其他许多有趣的东西。
注意:我现在正在做一些调整,不赞成使用各种“覆盖”选项。
享受,
- 斯科特
答案 11 :(得分:0)
Java可以很好地实现的一件事就是 ref 和 out 参数。
答案 12 :(得分:0)
与许多人一样,我很难管理用Java 1.4编写的应用程序(在许多情况下迁移到1.5是一种方式)。因此,即使Java 7或8获得新功能,我也无法使用它们......无论如何语法糖很好,它可以帮助编写,阅读和分析代码。
答案 13 :(得分:0)
我不喜欢“语法糖”,主要是因为这将是另一件需要学习的东西,并且很可能最终会被滥用。我已经诅咒自己制造吸气剂和制定者的烦恼,所以我理解为什么人们想要尽可能简单地创造它们但我宁愿看到@Get
,@Set
和{{1}注释比使用更多语法thingamajiggers来完成这项工作。
答案 14 :(得分:0)
java平台采用了大量的编程语言。如果你想要更多的语法糖,你可以使用另一种语言,如Groovy或(J)Ruby,它仍然可以在jvm上运行并与你的其他java库一起使用。 (我甚至认为有一个C#实现;)
答案 15 :(得分:-2)
我不同意。