我正在创建一个包com.XXXX
里面我在java文件中声明了许多类(默认 - 非公共)
让我们像:
class A{}
class B{}
class C{}
我在另一个文件中导入 com.XXXX
我无法使用包内的这些类,因为它们不是公共的。
所以我正在推动为每个类创建单独的文件的状态。
每个类只是一个小结构,没有任何额外的功能。所以我想把它们放在一个文件中。所以我不能将类声明为公共的
有没有办法使用所有类而不将它们分成单独的文件?
我正在创建一个包com.XXXX
里面我在java文件中声明了许多类(默认 - 非公共)
让我们像:
class A{}
class B{}
class C{}
我在另一个文件中导入 com.XXXX
我无法使用包内的这些类,因为它们不是公共的。
所以我正在推动为每个类创建单独的文件的状态。
每个类只是一个小结构,没有任何额外的功能。所以我想把它们放在一个文件中。所以我不能将类声明为公共的
有没有办法使用所有类而不将它们分成单独的文件?
这是因为默认的 java 访问修饰符是包私有的。当您创建没有访问修饰符的类时,它们只能在包中访问。
如果您不想将其暴露在 jar 之外,请将您的包重命名为 com.internal.XXXX。当您输入 internal 关键字时,该包在 jar 之外不可用,甚至认为您的包内的类将是公共的。
如果(以某种方式)将这些类组合在一起是有意义的,那么您可以将它们作为静态内部类放在包装类中,例如:
package com.somewhere;
public class Utils {
public static class DateUtils {
public static Date today() {
return new Date();
}
}
public static class FilenameUtils {
public static String stripExtension(String path) {
return path.substring(0, path.lastIndexOf("."));
}
}
}
然后,您将能够在其他地方导入这些:
package com.elsewhere;
import com.somewhere.Utils;
public class Task {
Date today = Utils.DateUtils.today();
}
如果你想在同一个文件中有多个类,你可以使用嵌套类。
请看一下: https ://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
例子:
class OuterClass {
...
class NestedClass {
...
}
}
然后,您可以从另一个包中引用 OuterClass.NestedClass