Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从包含多个类的java文件导入java类_Java_Exception - Fatal编程技术网

从包含多个类的java文件导入java类

从包含多个类的java文件导入java类,java,exception,Java,Exception,我遇到的情况是,我在一个java文件中为自定义异常创建了多个类。如下 public class IllegalArgumentException extends Throwable { public IllegalArgumentException(String exceptionString) { super(exceptionString); } } class InvalidDirectoryExceptio

我遇到的情况是,我在一个java文件中为自定义异常创建了多个类。如下

    public class IllegalArgumentException extends Throwable {
        public IllegalArgumentException(String exceptionString) {
            super(exceptionString);
        }
    }

    class InvalidDirectoryException extends Throwable {
        public InvalidDirectoryException(String exceptionString) {
            super(exceptionString);
        }
    }

    class InvalidJsonFormatException extends Throwable {
        public InvalidJsonFormatException(String exceptionString) {
            super(exceptionString);
        }
    }

    class InvalidFileTypeException extends Throwable {
        public InvalidFileTypeException(String exceptionString) {
            super(exceptionString);
        }
    }
当我尝试导入其中一个类时,它无法解析。我只能导入IllegalArgumentException类。我不想为每个类创建多个java文件。那么有没有办法做到这一点呢

我不想为每个类创建多个java文件

如果您想从其他软件包访问它们,您必须这样做。在Java中,每个文件必须只有一个公共类。这是一条规则。您不希望每个类都有一个单独的文件,这可能是有原因的,但Java并不关心这一点


您可以尝试在单个外部类中创建每个静态内部类,然后使用
import static
,但这是一种不好的做法,因为这样会滥用内部类的预期用途,因此我不鼓励使用该方法。但是您可以创建一个通用公共类,并将所有其他类作为内部类放在主公共类中

例如:

public class AllExeptions{

   class IllegalArgumentException extends Throwable {
        public IllegalArgumentException(String exceptionString) {
            super(exceptionString);
        }
    }

    class InvalidDirectoryException extends Throwable {
        public InvalidDirectoryException(String exceptionString) {
            super(exceptionString);
        }
    }

    class InvalidJsonFormatException extends Throwable {
        public InvalidJsonFormatException(String exceptionString) {
            super(exceptionString);
        }
    }

    class InvalidFileTypeException extends Throwable {
        public InvalidFileTypeException(String exceptionString) {
            super(exceptionString);
        }
    }
}

如果您不熟悉Java内部类,那么我建议您使用tutorialPoint的nince内部类教程:

您有三个选项:将所有内部类设置为类似“CustomExceptions”的内部类(错误做法),将它们放在不同的文件中(通常是最佳做法)或者将正在访问它们的类放在同一个包中(因为最后3个是包私有的)。InvalidDirectoryException、InvalidJsonFormatException、InvalidFileTypeException是包保护的类,您是要将它们导入同一个包中还是?每个Java文件只允许有一个公共类,如果你想有4个公共类,你必须创建4个不同的Java文件,为什么把所有内容都保存在一个文件中更好呢?我不想要单独的文件。因为如果我需要100个自定义异常,那么为什么我要创建100个类。@AashishVerma为什么不呢?100个班级100个文件有什么不好?也就是说,如果您真的需要那么多自定义异常。您可能是将异常设计得太细粒度了。