Java y中的x在不可访问的类或接口中定义,ID在结构中
我得到Java y中的x在不可访问的类或接口中定义,ID在结构中,java,java-7,public,access-specifier,Java,Java 7,Public,Access Specifier,我得到main.java:error:someStruct中的someId是在不可访问的类或接口中定义的,但我如何解决这个问题 我的主要班级: import subdir.Subclass; public class main{ ... Subclass.someArrayList.get(i).someString ... } 我的子类: package subdir; public class Subclass{ public static ja
main.java:error:someStruct中的someId是在不可访问的类或接口中定义的
,但我如何解决这个问题
我的主要班级:
import subdir.Subclass;
public class main{
...
Subclass.someArrayList.get(i).someString
...
}
我的子类:
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;
}
}
packagesubdir;
公共类子类{
public static java.util.ArrayList someArrayList=new java.util.ArrayList(java.util.Arrays.asList(
新的someStruct(3,“字符串”,“字符串”),
新的someStruct(4,“字符串”,“字符串”)
));
}
类someStruct
{
公共int-someId;
公共字符串someString;
公共字符串2;
公共someStruct(int-someId、String-someString、String-someString2){
this.someId=someId;
this.someString=someString;
this.someString2=someString2;
}
}
如果您想从其他包访问某个内容,它必须是公共的
您将无法访问另一个包中受保护的
或私有的
。它们必须是公共的@DanielRuf,您不必创建新的类文件。
可以使用嵌套类。我已将您的代码修复为可运行的示例
你的固定文件夹/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 );
};;
};;
错误代码:
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;
}
};;
};;
错误:PackageClass中的sayHello()是在不可访问的类中定义的 或接口
package-pkg;
公共课
糠秕角质{
公共静态包类
pkg_var=new PackageClass();
公共静态包类
getPkgVar(){
返回(MyStaticUtil.pkg_var);
};;
};;
class//:那么我真的必须创建一个新的类文件吗?@DanielRuf如果你所说的类文件是指.java
源文件,那么是的。每个代码只有一个公共类/接口。java < /COD>文件。@ pHEMO看起来java(OOP)比C++更严格,代码是(自动)转换C++项目的一部分。您忘记了默认访问修饰符(没有访问修改器的编写),这似乎是问题所在。
import pkg.MyStaticUtil;
public class RunMe{
public static void main( String [] args ){
MyStaticUtil.getPkgVar().sayHello();
MyStaticUtil.pkg_var.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]");
};;
};;
};;