我得到main.java: error: someId in someStruct is defined in an inaccessible class or interface
但我该如何解决?
我的主要课程:
import subdir.Subclass;
public class main{
...
Subclass.someArrayList.get(i).someString
...
}
我的subdir.Subclass类:
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")
));
}
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;
}
}
答案 0 :(得分:8)
如果您想要访问其他包中的内容,则必须为public
。
答案 1 :(得分:1)
您将无法访问其他包中protected
或private
的任何内容。它们必须是public
。
答案 2 :(得分:0)
@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 );
};;
};;
您的固定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;
}
};;
};;
要运行:
预期输出:
[str]:字符串
这是另一个 GENERAL 例子,显示了另一个用例: 我喜欢创建将功能放入子容器的实用程序 有助于命名不同类别的功能,例如:
MyStaticUtil.pkg_var.sayHello();
其中一些功能通过放入其中进行分类 类文件中可公开访问的帮助对象, 这是您的操作方式:
我们的跑步者班:(两个示例中都相同):
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]");
};;
};;
};;