Java中的“属性”和C#中的“属性”一样吗?在C#中,您可以使用属性使数据字段可公开访问(允许用户直接访问它),同时保留对那些直接访问的字段执行数据验证的能力。Java有类似的东西吗?例如,假设存在一个具有以下实现的C#类(见下文):publicclassnewInt{publicnewInt(){...}publicintx{get{returnthis.x}set{this.x=isValid(value)}}}privatestaticintisValid(intvalue){...}类中的这个定义允许用户在从中检索和分配值时“自然地”使用数据字段“x”。以下是它在main中的使用方式。公共类测试{publicstaticvoidmain(String[]args){newInta=newnewInt();斧头=50;intb=ax;}}问题是……Java也可以这样做吗?如果是这样,它叫什么?不,这就是Java有getter/setter的原因。在C#中,您通常有这样的东西:publicclassSomeObject{privatestring_title="";publicstringTitle{get{return_title;}设置{_title=值;}}}//或者使用自动属性??publicclassSomeObjectAutoProperties{publicstringTitle{get;放;}}等效的Javagetter/setter是:publicclassSomeObject{privateString_title="";publicstringgetTitle(){return_title;}publicvoidsetTitle(Stringvalue){_title=value;有Java平台,有Java语言。Java语言不支持属性(可能永远不会),但您不必使用Java语言来使用Java平台(就像您不必坚持使用C#来使用.NET平台一样)。检查:还有很多其他的。不,您会使用getter和setter。这是Java约定。公共类newInt{publicnewInt(){...}privateint_x=0;publicintgetX(){返回this._x;}publicvoidsetX(intx){this._x=isValid(x);}}不,Java没有属性。Java习惯用法是使用mutator/accessor(getter/setter)。它们不太可能包含在下一个版本(Java7)中,尽管许多人赞成添加它们。奇怪的是,JavaFX有属性。请记住,当Java诞生时,它从C++中借鉴了很多思想。因此,一些语法和习语与语言非常相似。不,它没有。我真的很难理解这个C#属性,因为我认为规则之一是执行尽可能少的代码,因为它们已经是公共的,为什么不改用公共属性呢?因此,您的Java等效项(可能很丑)将是:publicclassNewInt{//在Java中,类名按照惯例以大写字母开头publicintx;你可以像这样使用它:NewIntni=newNewInt();n.x=50;intb=ni.x;我敢肯定会有一些事情是肯定的,但是,大多数时候都会这样做(顺便说一句,我从来没有像这样编码:P)顺便说一句,我不太喜欢getter和setter,但我接受它们作为Java约定的一部分。我只是希望他们改用这个:publicclassNewInt{privateintx;publicintx(){返回this.x;}publicvoidx(intvalue){this.x=value;}}所以用法是:NewInta=newNewInt();斧头(10);intb=ax();可能在下一个Java生活中。以上是C#学习教程:Java的“属性”和C#一样吗?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
