Java中的获取/固定器
-
22-08-2019 - |
题
我是Java的新手,但是在ActionScript 3方面有一些OOP经验,因此我试图依靠我知道的东西迁移。
在ActionScript 3中,您可以使用GET和设置关键字创建Geters和Setters,这意味着您可以在类中创建一个方法,并通过该类实例的属性访问数据。我听起来可能很复杂,但事实并非如此。这是一个例子:
class Dummy{
private var _name:String;
public function Dummy(name:String=null){
this._name = name;
}
//getter
public function get name():String{
return _name;
}
//setter
public function set name(value:String):void{
//do some validation if necessary
_name = value;
}
}
我会访问 name
在对象中为:
var dummy:Dummy = new Dummy("fred");
trace(dummy.name);//prints: fred
dummy.name = "lolo";//setter
trace(dummy.name);//getter
我将如何在Java做到这一点?
仅仅拥有一些公共领域是不可能的。我注意到,有这种约定在方法面前使用和设置的约定,我可以接受。
例如,
class Dummy{
String _name;
public void Dummy(){}
public void Dummy(String name){
_name = name;
}
public String getName(){
return _name;
}
public void setName(String name){
_name = name;
}
}
在Java中是否有等效的ActionScript 3 Getter/Setter,就像从类的实例访问私有字段作为字段,但具有在类内部实现的方法吗?
解决方案
没有。 AS3 Geters和Setters是一件ECMAScript的事情。在Java中,您被GetVal()和setVal()样式函数所困扰 - 没有任何句法糖可以使您变得容易。
我认为Eclipse可以帮助自动生成这些类型的事物...
其他提示
您的Java代码很好,除非您想制作 _name
私人的.
没有 得到 和 放 Java中的关键字如您的AS3示例。抱歉,它没有比您已经做的好。
更正的代码:
class Dummy {
private String _name;
public void Dummy() {}
public void Dummy(String name) {
setName(name);
}
public String getName() {
return _name;
}
public void setName(String value) {
_name = value;
}
}
可悲的是,不,Java中没有同等语言级别的支持。
尽管在Java文化中建立了GET*和SET*模式为JSP(EL)制作,然后您可以使用属性符号来访问Getters和Setter。
我认为没有Getter或Setter,因为他们在您的情况下什么都不做,除了使代码更加复杂。这是一个没有Getters或Setter的示例。
class Dummy {
public String name;
public Dummy(String name) { this.name = name; }
}
Dummy dummy = new Dummy("fred");
System.out.println(dummy.name);//getter, prints: fred
dummy.name = "lolo";//setter
System.out.println(dummy.name);//getter, prints: lolo
恕我直言,没有比您需要的更复杂的事情。通常情况下,增加复杂性会遭受 你 - gonne-need-it
独立于IDE的方法是使用 伦波克, ,一个基于注释的库,生成getters,setter,甚至 equals()
和 hashcode()
. 。它是为编译器而不是在源文件中执行此操作的,因此您不必查看这些方法,而只需使用它们即可。
在Java中,您唯一没有公开对象内部的选项是像您的示例中一样制作自己的Getters和Setter。
惯例是预先准备 get
或者 set
在正在改变的田野前。因此,就像您的示例一样 name
将有 getName
和 setName
方法分别作为相应的Getter和setter。
同样,在添加播放器和获取器之前,问自己为什么要公开有关对象的内部数据,这可能是一个好主意。
我建议您阅读本文 -http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html