了解Java Setter和Getters

时间:2013-11-06 06:45:14

标签: java setter tapestry getter

我正在研究一个我没有编写的Java项目,用Tapestry 4编写。这是一些代码的例子:

@Persist
public abstract String getParentClientId();
public abstract void setParentClientId(String str);

我对Java的了解有限。我习惯于看到吸气剂返回东西和制定者,好吧,设置一些东西。没有{}用于定义这些方法,并且它们之间没有像我期望的那样的代码。我缺少一些约定吗?也许getParentClientId()隐式返回ParentClientId的值,或类似的东西?你有任何信息都会很棒。谢谢!

6 个答案:

答案 0 :(得分:4)

那些是abstract methods,这就是为什么他们没有任何实施。要了解有关抽象类和方法的更多信息,请参阅Oracle's documentation on Abstract Methods

  

抽象方法是在没有实现的情况下声明的方法(没有大括号,后跟分号),如下所示:

abstract void moveTo(double deltaX, double deltaY);
     

当抽象类被子类化时,子类通常为其父类中的所有抽象方法提供实现。但是,如果没有,则子类也必须声明为abstract。

答案 1 :(得分:0)

setter和getter的典型实现是:

public String getParentClientId() { return parentClientId;}

public void setParentClientId(String str){ parentClientId = str;}

如果方法有abstract修饰符意味着它应该在子类中被剔除

答案 2 :(得分:0)

你的方法很抽象,你必须要实现这个方法。

答案 3 :(得分:0)

这些方法被定义为抽象,因此没有代码。

也许某些tapestry API会通过创建动态类来实现这些抽象方法,就像你使用@Persist for getParentClientId()一样。如果这些方法在您的代码中有效,那么情况就是如此。

答案 4 :(得分:0)

这些是抽象类。它们用于定义必须存在于该类的任何实例上的方法,但每个子类的方法都不同。它们实际上是在子类中定义的 当然,不能创建定义抽象方法的类的对象,因为它不具有该方法的实现。因此,只有抽象类可以包含抽象方法 - 而且永远不能创建抽象类的实例。

答案 5 :(得分:0)

我不是Tapestry 4的用户,但据我所知,Tapestry 4使用了很多抽象方法声明来挂钩您不必编写代码的功能(例如getter / setter)。

然后Tapestry 4将在运行时创建一个新类,它继承您的类并实现您声明的一些抽象方法(基于某些Tapestry 4约定)。

我是Tapestry 5用户,在这个新版本中,框架不需要抽象方法,他们改变了创建运行时创建类的方式(他们现在使用的是Plastic框架,以及之前的javassist)为了避免使用那些罕见的抽象声明而赞成使用全新的注释。

如果您有时间迁移到T5,请不要怀疑!