Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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 访问嵌套类的变量时出错_Java_Nested Class - Fatal编程技术网

Java 访问嵌套类的变量时出错

Java 访问嵌套类的变量时出错,java,nested-class,Java,Nested Class,我急需帮助。我有两节课。 一种是PatientRecord,其中包含嵌套类。 另一个是PatientGenerator,它通过生成随机数据用PatientRecords填充数据库 对于PatientRecord的每个字段 我的问题是,我不能访问某些嵌套类的变量,但我可以访问其他类。至少对某些人来说,它可以编译,但对其他人来说,它会出错 error: cannot find symbol temp.fname = getRFirstName(); symbol: v

我急需帮助。我有两节课。 一种是PatientRecord,其中包含嵌套类。 另一个是PatientGenerator,它通过生成随机数据用PatientRecords填充数据库 对于PatientRecord的每个字段

我的问题是,我不能访问某些嵌套类的变量,但我可以访问其他类。至少对某些人来说,它可以编译,但对其他人来说,它会出错

error: cannot find symbol
            temp.fname = getRFirstName();
  symbol:   variable fname
  location: variable temp of type PatientRecord.Visitor
这是失败的电话

private ArrayList<PatientRecord.Visitor> generateVisitors(PatientRecord p) {
    int payments = rnd.nextInt(10);
    ArrayList<PatientRecord.Visitor> array = new ArrayList<PatientRecord.Visitor>();
    for (int i = 0; i < payments; i++) {
        PatientRecord.Visitor temp = p.new Visitor();
        temp.fname = getRFirstName();
        temp.lname = getRLastName();
        temp.relation = relations[rnd.nextInt(relations.length)];
        array.add(temp);
    }
    return array;
}
这里是类的一部分,其中包含嵌套的类访问者

public class PatientRecord implements Serializable{
   public int pId;
   public String FirstName;
   public String MiddleName;
   public String LastName;
   public boolean gender;
   public Location location;
   public ArrayList visitors;
   public ArrayList emergencyContacts;
   public DateTime discharge;
   public Admission admission;
   public String primaryDoctor;
   public ArrayList procedures;
   public ArrayList prescriptions;
   public ArrayList nurseNotes;
   public ArrayList doctorNotes;
   public InsurancePolicy insurancePolicy;
   public ArrayList billing; // Arraylist of payments


   public PatientRecord() {
       init();
   }

   public PatientRecord(int id) {
       pId = id;
       init();
   }

   private void init() {
       visitors = new ArrayList<Visitor>();
       emergencyContacts = new ArrayList<Contact>();
       location = new Location();
       discharge = new DateTime();
       admission = new Admission();
       procedures = new ArrayList<Procedure>();
       prescriptions = new ArrayList<Prescription>();
       nurseNotes = new ArrayList<Note>();
       doctorNotes = new ArrayList<Note>();
       billing = new ArrayList<Payment>();
       insurancePolicy = new InsurancePolicy();


   }

   public class Visitor {
        public String fname;
        public String lname;
        public String relation;
        public Visitor() {
        }
   }

删除部分代码后,我没有编译错误:

public class PatientRecord
{

public int pId;
public String FirstName;
public String MiddleName;
public String LastName;
public boolean gender;
public ArrayList visitors;
public ArrayList emergencyContacts;
public String primaryDoctor;
public ArrayList procedures;
public ArrayList prescriptions;
public ArrayList nurseNotes;
public ArrayList doctorNotes;
public ArrayList billing; // Arraylist of payments

public PatientRecord() {
    init();
}

public PatientRecord(int id) {
    pId = id;
    init();
}

private void init() {
    visitors = new ArrayList<Visitor>();
}

public class Visitor
{
    public String fname;
    public String lname;
    public String relation;
}

public class PatientGenerator
{
    public ArrayList<PatientRecord.Visitor> generateVisitors(PatientRecord p) {
        //int payments = rnd.nextInt(10);
        ArrayList<PatientRecord.Visitor> array = new ArrayList<PatientRecord.Visitor>();
        for (int i = 0; i < 10; i++) {
            PatientRecord.Visitor temp = p.new Visitor();
            temp.fname = "first";
            temp.lname = "last";
            temp.relation = "brother";
            array.add(temp);
        }
        return array;
    }
}


public static void main(String[] args)
{
    PatientRecord t = new PatientRecord();
    PatientGenerator c = t.new PatientGenerator();
    c.generateVisitors(t);

}
}

您的代码与此类似吗?

这主要是从您的代码中复制+粘贴,您是否可以创建一个更简单的代码,以重新创建可由您轻松复制的问题others@KiranHegde好主意,因为对他的代码/问题进行一次小规模的重新构建对我来说是可行的。您似乎在私有变量声明中放置了一个函数。你能给我们你的PatientRecord类的完整实现吗?