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