我目前在我的一个类中有两个构造函数,一个到我的主类,另一个到另一个具有我使用的大多数方法的类。我没有为我的第二个类使用静态方法的原因是我有一个构造函数,我不希望代码被任何其他源使用,只是我的。以下是两个构造函数:
PrisonProfessionalMain plugin;
public PPCommandAdminMenu(PrisonProfessionalMain instance)
{
plugin = instance;
}
QuickMethods qm;
public PPCommandAdminMenu(QuickMethods instance)
{
qm = instance;
}
然后我在这里调用QuickMethods
类的方法:
qm.getConfigString(plugin, "prefix")
显然,无论我从这个类调用什么方法,它都返回null。我不认为这是我在方法中的内容,但这是来自其他类的方法:
public String getConfigString(PrisonProfessionalMain instance, String configvar)
{
return colorize(instance.getConfig().getString(configvar));
}
我在这里看不到问题,但我想知道是否应该使用静态方式。我想尝试远离静态方法,原因如上所述。
请记住:从此类调用任何其他方法会导致返回null。我知道这一点,因为在控制台中它有一个堆栈跟踪,读取为空。它在调用此类中任何方法的行上说明了这一点。
我尝试从方法中删除字符串和实例:
public String getConfigString()
{
return System.out.println("test");
}
然而,这仍然导致另一个空指针,指向我调用该方法的行。
我的问题是:在调用方法/字符串时,我如何让QuickMethods类停止返回null。
答案 0 :(得分:3)
一次只能调用一个构造函数,根据您的代码,您需要组合构造函数,如
QuickMethods qm;
PrisonProfessionalMain plugin;
public PPCommandAdminMenu(PrisonProfessionalMain plugin, QuickMethods qm)
{
this.plugin = plugin;
this.qm = qm;
}
否则(根据定义)一个将是null
。
此外,
public String getConfigString()
{
return System.out.println("test");
}
不是合法代码,因为PrintStream.println()
是void
(而System.out
是PrintStream
)。你可以使用像
String str = "test";
System.out.println(str);
return str;