为不同的类调用get方法

时间:2013-07-17 14:17:20

标签: java

我有一个名为“ConstituentSet”的类。它有一个方法,即“getNucleusInConstSet()”,其输出将来自“命题”类。新的类“命题”有另一种方法,即“getProperty()”。我想知道“ConstituentSet”类中我的“Proposition Nucleus”的属性是什么。但我不知道我该怎么做。 我写了如下,但它不起作用。 (ConstituentSet.getNucleusInConstSet()).getProperty())

public class ConstituentSet{  
    // Constructor   
    private Proposition nucleusInConstSet;       

    public Proposition getNucleusInConstSet() {    
       return nucleusInConstSet;  
    }  
}  



public class Proposition{       

   //Constructor       
   private Property property;       

   public Property getProperty() {  
     return this.type;  
   }  
}

3 个答案:

答案 0 :(得分:4)

你有:

(ConstituentSet.getNucleusInConstSet()).getProperty()

但您需要调用ConstituentSet

实例

e.g。

ConstituentSet cs = new ConstituentSet();
cs.getNucleusInConstSet().getProperty();

请注意,这个习语(链式方法调用)可能很痛苦。如果您的某个方法返回 null,则很难理解它是哪一个(不使用调试器)。另请注意,a().b().c().d()形式的调用是破解封装的一种微妙形式(a显示它具有b,表明它具有c等。< / p>

答案 1 :(得分:3)

如果您输入((ConstituentSet.getNucleusInConstSet()).getProperty()),则表示您尝试调用ConstituentSet的静态方法。

您需要实例化它,然后调用该对象。

  ConstituentSet anInstanceOf = new ConstituentSet();
  anInstanceOf.getNucleusInConstSet()).getProperty());

答案 2 :(得分:2)

这不起作用:

ConstituentSet.getNucleusInConstSet().getProperty();

因为getNucleusInConstSet()方法不是静态的。您必须使用ConstituentSet实例,如下所示:

ConstituentSet cs = new ConstituentSet();
cs.getNucleusInConstSet().getProperty();

当然,您必须确保nucleusInConstSet不为空,否则您将获得NullPointerException。在ConstituentSet的构造函数中初始化其值,或使用setNucleusInConstSet()设置它。

或者,您可以将getNucleusInConstSet()设为静态,但我不认为在这种情况下这是正确的做法(但我们没有足够的信息来说明问题)。