例如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版本中会有糖吗?
虽然我不一定同意Java的哲学,但我认为在Java中添加大量语法糖会违背其理念。 Java应该是一个非常简单,易于推理的语言,只有很少的结构,在编程社区中是一种最低标准的通用语言。这主要是对C ++复杂性的反应。除了所需要的(主要是垃圾收集)之外,它应该是非常少的“魔力”,以使其成为一种内存安全的语言。
如果你想要一个相当高性能的静态类型语言中的更多糖等,我会说Java对你来说是错误的语言。你可能最好只使用C#,或者可能是D.
这不是完全必要的。
一个简单的编辑器宏可以工作:
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; }
}
我写了一些注释(和注释处理器),这有点帮助。
见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,以及绑定它们(这是可选的)。您还可以使用其他许多有趣的东西。
注意:我现在正在做一些调整,不赞成使用各种“覆盖”选项。
请享用,
- 斯科特
Java可以很好地实现的一件事就是ref和out参数。
我不喜欢“语法糖”,主要是因为它是另一种学习的东西,并且最有可能最终被滥用。我已经诅咒自己制造吸气剂和制定者的烦恼,所以我理解为什么人们想要尽可能简单地创造那些但我宁愿看到@Get
,@Set
和@GetSet
注释比更多语法thingamajiggers来完成这项工作。
java平台采用了大量的编程语言。如果你想要更多的语法糖,你可以使用另一种语言,如Groovy或(J)Ruby,它仍然可以在jvm上运行并与你的其他java库一起使用。 (我甚至认为有一个C#实现;)
与许多人一样,我很难管理用Java 1.4编写的应用程序(在许多情况下迁移到1.5是一种方式)。因此,即使Java 7或8获得新功能,我也无法使用它们......无论如何语法糖很好,它可以帮助编写,阅读和分析代码。
“复合糖导致分号癌症。”
- Alan Perlis。关于编程的谜语。
听起来你想要Groovy ...显然属性正在他们的路上,虽然不是在Java 7中(因为@erickson在评论中帮助纠正了我)。
Groovy确实有nice string sugar。
在过去的几年里,我也在Java和C#中进行了开发,并且发现C#在表达力和强大的语言结构方面是一种优秀的语言。 Java语言没有像C#那样经历相同程度的更改和更新,至少没有达到相同的速度。我仍然不一定意味着Java应该大幅更新,但我们需要在Java平台上使用功能强大且富有表现力的静态类型语言。我认为Scala将发展成这种替换语言,当普通Java不削减它时,Java开发人员可以切换到这种语言。
C#是一种非常棒的语言;这些天可能是“最好的”静态类型语言,但Java在我看来仍然是一个优越的平台。我喜欢Java这个平台,我喜欢C#这个语言。
根据Mark Reinhold在Devoxx 2008上的演讲,Java 7中不会将属性支持添加到Java中。
http://hamletdarcy.blogspot.com/2008/12/java-7-update-from-mark-reinhold-at.html
有关Java 7中的属性的更多信息,请访问:
虽然属性很好,但它们不是java。我认真地认为javabean规范很久以前关闭了那扇门。我认为需要更清晰的语法糖案例:
如果我再次将java用于任何大的东西,它将作为另一个编译器的输出语言。
那是oldschool C#。现在是
public int X { get; set; }
糖对你的牙齿有害。句法糖对你的大脑有害。