0

我有一个名为“ConstituentSet”的类。它有一种方法,即“getNucleusInConstSet()”,其输出将来自“Proposition”类。新类“命题”有另一种方法,即“getProperty()”。我想知道“ConstituentSet”类中我的“命题核”的属性是什么。但我不知道我该怎么做。我写如下,但它不起作用。 (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;  
   }  
}
4

3 回答 3

4

你有:

(ConstituentSet.getNucleusInConstSet()).getProperty()

但是你需要调用一个实例ConstituentSet

例如

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

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

于 2013-07-17T14:20:01.413 回答
3

如果您键入((ConstituentSet.getNucleusInConstSet()).getProperty())您正在尝试调用ConstituentSet.

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

  ConstituentSet anInstanceOf = new ConstituentSet();
  anInstanceOf.getNucleusInConstSet()).getProperty());
于 2013-07-17T14:20:39.473 回答
2

这不起作用:

ConstituentSet.getNucleusInConstSet().getProperty();

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

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

当然,你必须确保它nucleusInConstSet不为空,否则你会得到一个NullPointerException. 在 的构造函数中初始化其值ConstituentSet或使用setNucleusInConstSet().

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

于 2013-07-17T14:20:54.720 回答