我制作了一个公共的“ 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/

10-13 05:50