首页 > 解决方案 > 我们如何在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”类以及如何设置地址类中的街道名称、城市和其他成员。任何想法,将不胜感激。

标签: javainner-classes

解决方案


下面的代码使用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您可以直接访问类EmployeeEmployeeAddress. 尽管如此,您需要了解 java 中不同的访问修饰符


推荐阅读