@DanielRuf,您不必创建新的类文件。
您可以使用嵌套类。我已将您的代码固定为可运行的示例。
您的 FIXED SOME_FOLDER/main.java:
这个文件并不是真正重要的部分,
但这里是为了完整性。
import subdir.Subclass;
public class main{
public static void main( String [] args ){
String
str=(
Subclass
.someArrayList
.get( 0 ) //:<--Hardcoded for example
.someString
);;
System.out.println( "[str]:"+str );
};;
};;
您的 FIXED SOME_FOLDER/subdir/Subclass.java:
package subdir;
public class Subclass{
public static java.util.ArrayList<someStruct>
someArrayList = new java.util.ArrayList<someStruct>(
java.util.Arrays.asList(
new someStruct(3, "string", "string"),
new someStruct(4, "string", "string")
)
);;
public static class someStruct
{
public int someId ;
public String someString ;
public String someString2;
public someStruct(
int someId
,String someString
,String someString2
){
this.someId = someId ;
this.someString = someString ;
this.someString2 = someString2;
}
};;
};;
运行:
- cd 到 SOME_FOLDER
- javac main.java
- java 主程序
预期输出:
[str]:字符串
这是一个更GENERAL的例子,展示了另一个用例:
我喜欢创建将函数放入子容器的实用程序
这有助于命名不同类别的函数,如下所示:
MyStaticUtil.pkg_var.sayHello();
某些功能按放入的分类
类文件中可公开访问的辅助对象,
以下是你的做法:
我们的 Runner 类:(两个示例相同):
import pkg.MyStaticUtil;
public class RunMe{
public static void main( String [] args ){
MyStaticUtil.getPkgVar().sayHello();
MyStaticUtil.pkg_var.sayHello();
};;
};;
错误代码:
错误:PackageClass 中的 sayHello() 定义在不可访问的类中
或接口
package pkg;
public class
MyStaticUtil{
public static PackageClass
pkg_var = new PackageClass();
public static PackageClass
getPkgVar(){
return( MyStaticUtil.pkg_var );
};;
};;
class //:<<<<<<<<<<<<<<<<<<<<<<<<<<<<INACCESSIBLE
PackageClass{
public static void
sayHello(){
System.out.println("[Hello]");
};;
};;
正确:
package pkg;
public class
MyStaticUtil{
final public static PackageClass //:<--Final so component cannot be
pkg_var = new PackageClass(); //: "beheaded" (de-referenced/set to null)
public static PackageClass
getPkgVar(){
return( MyStaticUtil.pkg_var );
};;
public static class //:Accessible and not
PackageClass{ //:required to be declared in another file.
public static void
sayHello(){
System.out.println("[Hello]");
};;
};;
};;