package Exception;

public class Exceptions {
    public class NoSpaceException extends RuntimeException {
        public NoSpaceException(){
            super("There is not enough room in the set for another element.");
        }
    }

    public class NotValidTypeException extends NullPointerException {
        public NotValidTypeException(){
            super("You can only add strings to a set.");
        }
    }

    public class NoItemException extends NullPointerException {
        public NoItemException(){
            super("There is no next element.");
        }
    }
}


我的其他班级对此软件包没有可见性。我还有其他三个可能抛出这些异常之一的类,并且我不想将无包声明上方的代码复制/粘贴到每个文件上。我想减少冗余并将其作为一个单独的文件。

如何使它们可见?

最佳答案

可以将内部类更改为静态,即:

public class Exceptions {
    public static class NoSpaceException extends RuntimeException {
        ...
    }

    public static class NotValidTypeException extends RuntimeException {
        ...
    }

    public static class NoItemException extends RuntimeException {
        ...
    }
}


或者,如果您不想更改任何内容,则可以通过Exceptions实例创建实例:

Exceptions exceptions = new Exceptions();RuntimeException e = exceptions.new NoItemException();

第一种方法是可取的。

另外请注意,请考虑扩展比RuntimeException更特定的类(例如IllegalArgumentException,IllegalStateExecption等)。

关于java - 创建异常类;其他类别的不可见性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22927532/

10-11 17:27