我制作了一个公共的“ Utils”类,在其中放置了一些常用的常规静态方法。
在该Utils类中,我创建了一个私有静态内部类,其中包含Utils提供的某些“工具”。 (该工具是我需要的某种解析器)。
Utils中的一种方法,返回该解析器的新实例,一切正常。
“问题”是,对于解析器内部的每个公共方法,我都收到警告,而该警告未从包含的Utils类中调用。
这是它的外观框架:
public class Utils
{
public static Parser(String[] msgs) throws Exception
{
return Parser.create(msgs);
}
private static class Parser
{
/** fields... **/
private Parser()
{}
public static Parser create(String[] msgs) throws Exception
{
Parser parser = new Parser();
setupParser(msgs);
return parser;
}
private static void setupParser(String[] msgs) throws Exception
{ // do stuff
}
public boolean someInnerMethod(String key)
{
// do stuff
}
}
}
方法
someInnerMethod
引发警告:Utils.Parser类型的方法someInnerMethod(String)从未在本地使用
难道我做错了什么?有没有更好的方式来做我在这里所做的事情?
我通常希望解析器不能从外部访问,但是可以使用静态方法来获取它(我不想每次需要它的方法时都实例化一个Utils类)
提前致谢。
最佳答案
不对您将无法使用您的类-您无法在静态工厂方法中使用返回值(目前无法编译,但我想返回值应该为Parser
)。返回值的可见性使使用工厂方法的任何人都无法访问它。
一种解决方法是排除内部类实现的公共接口,并将其用作工厂方法的返回值。
关于java - 以下“私有(private)静态内部类”实现是否正确?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21261266/