我有一个名为“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;
}
}
答案 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()
设为静态,但我不认为在这种情况下这是正确的做法(但我们没有足够的信息来说明问题)。