我目前在我的一个课程中有两个构造函数,一个进入我的主班,另一个是我使用的大多数方法的另一个类。我不使用构造函数的第二类静态方法的原因,是因为我不希望任何其他来源都使用代码,只是我的。这是两个构造函数:
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,从而调用方法/字符串。
一次只能调用一个构造函数,鉴于您的代码似乎需要组合构造函数,例如
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;