Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java y中的x在不可访问的类或接口中定义,ID在结构中_Java_Java 7_Public_Access Specifier - Fatal编程技术网

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]");
        };;
    };;
};;