Java从另一个返回null的类获取String

时间:2015-05-08 02:08:25

标签: java string null

我目前在我的一个类中有两个构造函数,一个到我的主类,另一个到另一个具有我使用的大多数方法的类。我没有为我的第二个类使用静态方法的原因是我有一个构造函数,我不希望代码被任何其他源使用,只是我的。以下是两个构造函数:

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。

1 个答案:

答案 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.outPrintStream)。你可以使用像

这样的东西
String str = "test";
System.out.println(str);
return str;