导入包以及如何在 java 文件中使用所有 类
Import package and how to use all classes in a java file
我正在创建一个包 com.XXXX
在其中我在 java 文件中声明了许多 类(默认 - 不是 public)
让我们像这样:
class A{}
class B{}
class C{}
我正在将 com.XXXX 导入另一个文件
我无法使用包装内的这些 类,因为它们不是 public。
所以我正在推动为每个 类.
创建单独文件的状态
Every class is just a small structure, where it doesn't have any extra function. So I thought of keeping them in single file. So I can't declare classes as public
Is there any way to use all classes without splitting them into separate files?
这是因为默认的 java 访问修饰符是包私有的。当您创建没有访问修饰符的 类 时,它们只能在包内访问。
如果您不想将它暴露在 jar 之外,请将您的包重命名为 com.internal.XXXX。当您将内部关键字放在 jar 之外时,包将不可用,甚至认为包内的 类 将是 public.
如果(以某种方式)将这些 classes 组合在一起是有意义的,那么您可以将它们放在包装器 class 中作为静态内部 classes,例如:
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();
}
如果你想在同一个文件中有多个class,你可以使用嵌套类。
请看一下:
https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
示例:
class OuterClass {
...
class NestedClass {
...
}
}
然后您可以从另一个包
引用OuterClass.NestedClass
我正在创建一个包 com.XXXX
在其中我在 java 文件中声明了许多 类(默认 - 不是 public)
让我们像这样:
class A{}
class B{}
class C{}
我正在将 com.XXXX 导入另一个文件
我无法使用包装内的这些 类,因为它们不是 public。
所以我正在推动为每个 类.
创建单独文件的状态Every class is just a small structure, where it doesn't have any extra function. So I thought of keeping them in single file. So I can't declare classes as public
Is there any way to use all classes without splitting them into separate files?
这是因为默认的 java 访问修饰符是包私有的。当您创建没有访问修饰符的 类 时,它们只能在包内访问。
如果您不想将它暴露在 jar 之外,请将您的包重命名为 com.internal.XXXX。当您将内部关键字放在 jar 之外时,包将不可用,甚至认为包内的 类 将是 public.
如果(以某种方式)将这些 classes 组合在一起是有意义的,那么您可以将它们放在包装器 class 中作为静态内部 classes,例如:
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();
}
如果你想在同一个文件中有多个class,你可以使用嵌套类。
请看一下: https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
示例:
class OuterClass {
...
class NestedClass {
...
}
}
然后您可以从另一个包
引用OuterClass.NestedClass