java - 我们如何在java中的对象数组中为嵌套类创建一个实例?
问题描述
import java.util.Arrays;
import java.util.Scanner;
public class employee{
public String name;
public class employee_address{
String street_name;
String city;
String zipcode;
String state;
String country;
}
public static void main(String []args){
Scanner user_input = new Scanner(System.in);
int no_of_employees = user_input.nextInt();
employee[] employees_list = new employee[no_of_employees];
for(int i = 0;i < no_of_employees;i++){
employees_list[i].name = user_input.nextLine();
employees_list[I].employee_address = // this is it ?
}
}
}
在上面的代码中,我明白employee_address 是一个类,如果没有像代码中那样创建实例,就无法直接访问,这是没有意义的。但是如何创建与每个员工关联的employee_address 类的实例。
就像上面的代码一样,“employee_address”与每个员工相关联,但是如何初始化“employee_address”类以及如何设置地址类中的街道名称、城市和其他成员。任何想法,将不胜感激。
解决方案
下面的代码使用Java 命名约定(您的代码没有)。
代码后的注释。
import java.util.Scanner;
public class Employee {
private String name;
private EmployeeAddress address;
public class EmployeeAddress {
String streetName;
String city;
String zipcode;
String state;
String country;
}
public static void main(String[] args) {
Scanner userInput = new Scanner(System.in);
int noOfEmployees = userInput.nextInt();
Employee[] employeesList = new Employee[noOfEmployees];
for (int i = 0; i < noOfEmployees; i++) {
employeesList[i] = new Employee();
employeesList[i].name = userInput.nextLine();
EmployeeAddress employeeAddress = employeesList[i].new EmployeeAddress();
employeesList[i].address = employeeAddress;
employeesList[i].address.streetName = userInput.nextLine();
}
}
}
内部类是普通类。它不是其封闭类的成员。如果您希望类Employee
具有 [employee] 地址以及 [employee] 名称,则需要向Employee
类型为 的类添加另一个成员变量EmployeeAdress
。
Employee[] employeesList = new Employee[noOfEmployees];
上面的行创建了一个数组,但数组中的每个元素都是空的。因此,您需要首先创建一个Employee
对象并将其分配给数组的一个元素。因此,上面我的代码中的以下行:
employeesList[i] = new Employee();
由于EmployeeAddress
不是静态类,为了创建一个新实例,首先需要一个封闭类的实例,即Employee
. 因此,上面代码中的以下行。
EmployeeAddress employeeAddress = employeesList[i].new EmployeeAddress();
由于您的所有代码都在类Employee
中,因此在方法中main
您可以直接访问类Employee
和EmployeeAddress
. 尽管如此,您需要了解 java 中不同的访问修饰符。
推荐阅读
- java - java.lang.NoClassDefFoundError: javax.xml.bind.DatatypeConverterImpl(初始化失败)
- c++ - 有没有办法从对列表中获取列表,有效地将列表分成两个在 C++ 中
- python - Python Graph Search——确定后继节点是否比当前节点更接近目标
- android - EncryptedFile 加密什么类型的文件
- reactjs - 如何在 ReactJS 中使用上下文来更改不同函数中的属性
- apache-flink - 在 Apache Flink/Ververica CE 中添加自定义连接器
- javascript - 在javascript中更新对象属性?
- python - 将pycharm中的终端从sh改为普通
- jpa - 为什么 JPA EntityManager 会阻止代码执行?
- java - 如何检查java方法是否返回null而无需运行两次