[英]Understanding Java Setters And Getters
我正在研究一个我没有编写的Java项目,用Tapestry 4编写。这是一些代码的例子:
@Persist
public abstract String getParentClientId();
public abstract void setParentClientId(String str);
我对Java的了解有限。 我习惯于看到吸气剂返回东西和制定者,好吧,设置一些东西。 没有{}用于定义这些方法,并且它们之间没有像我期望的那样的代码。 我缺少一些约定吗? 也许getParentClientId()隐式返回ParentClientId的值,或类似的东西? 你有任何信息都会很棒。 谢谢!
那些是abstract methods
,这就是为什么他们没有任何实现。 要了解有关抽象类和方法的更多信息,请参阅Oracle关于抽象方法的文档 :
抽象方法是在没有实现的情况下声明的方法(没有大括号,后跟分号),如下所示:
abstract void moveTo(double deltaX, double deltaY);
当抽象类被子类化时,子类通常为其父类中的所有抽象方法提供实现。 但是,如果没有,则子类也必须声明为abstract。
setter和getter的典型实现是:
public String getParentClientId() { return parentClientId;}
public void setParentClientId(String str){ parentClientId = str;}
如果方法有abstract
修饰符意味着它应该在子类中被赋予
你的方法是抽象的,你必须实现tham)
这些方法被定义为抽象,因此没有代码。
也许一些tapestry API将通过创建动态类来实现这些抽象方法,就像你使用@Persist for getParentClientId()一样。 如果这些方法在您的代码中正常工作,则必须如此。
那些是抽象类。 它们用于定义必须存在于该类的任何实例上的方法,但每个子类的方法都不同。 它们实际上是在子类中定义的。
当然,不能创建定义抽象方法的类的对象,因为它不具有该方法的实现。 因此,只有抽象类可以包含抽象方法 - 而且永远不能创建抽象类的实例。
我不是Tapestry 4的用户,但据我所知,Tapestry 4使用了很多抽象方法声明来挂钩您不必编写代码的功能(例如getter / setter)。
然后Tapestry 4将在运行时创建一个新类,它继承您的类并实现您声明的一些抽象方法(基于某些Tapestry 4约定)。
我是Tapestry 5用户,在这个新版本中,框架不需要抽象方法,他们改变了创建运行时创建类的方式(他们现在使用的是Plastic框架,以及之前的javassist)以避免那些罕见的抽象声明支持使用全新的注释。
如果你有时间迁移到T5,不要怀疑它!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.