目前,我的一个类中有两个构造函数,一个指向我的主类,另一个指向另一个具有我使用的大部分方法的类。我不为我有构造函数的第二个类使用静态方法的原因是我不希望代码被任何其他源使用,而只是我的源。这是两个构造函数:
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;
关于Java从另一个类获取字符串返回null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30114679/