как добавить два объекта? - PullRequest
1 голос
/ 03 февраля 2020

У меня есть два класса: -

public class Employee {

    private String name;
    private String DOB;
    private String techicalSkill;

    Employee(){

    }
    Employee(String name, String DOB, String techicalSkill){
        this.name=name;
        this.DOB=DOB;
        this.techicalSkill=techicalSkill;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDOB() {
        return DOB;
    }

    public void setDOB(String dOB) {
        DOB = dOB;
    }

    public String getTechicalSkill() {
        return techicalSkill;
    }

    public void setTechicalSkill(String techicalSkill) {
        this.techicalSkill = techicalSkill;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((DOB == null) ? 0 : DOB.hashCode());
        result = prime * result + ((name == null) ? 0 : name.hashCode());
        result = prime * result + ((techicalSkill == null) ? 0 : techicalSkill.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Employee other = (Employee) obj;
        if (DOB == null) {
            if (other.DOB != null)
                return false;
        } else if (!DOB.equals(other.DOB))
            return false;
        if (name == null) {
            if (other.name != null)
                return false;
        } else if (!name.equals(other.name))
            return false;
        if (techicalSkill == null) {
            if (other.techicalSkill != null)
                return false;
        } else if (!techicalSkill.equals(other.techicalSkill))
            return false;
        return true;
    }

    @Override
    public String toString() {
        return "Employee [name=" + name + ", DOB=" + DOB + ", techicalSkill=" + techicalSkill + "]";
    }


}

и

package learning;

public class Person {

    private String address;
    private int age;
    private int weight;

    Person(){

    }
    public Person(String address, int age, int weight) {
        super();
        this.address = address;
        this.age = age;
        this.weight = weight;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getWeight() {
        return weight;
    }
    public void setWeight(int weight) {
        this.weight = weight;
    }
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((address == null) ? 0 : address.hashCode());
        result = prime * result + age;
        result = prime * result + weight;
        return result;
    }
    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Person other = (Person) obj;
        if (address == null) {
            if (other.address != null)
                return false;
        } else if (!address.equals(other.address))
            return false;
        if (age != other.age)
            return false;
        if (weight != other.weight)
            return false;
        return true;
    }
    @Override
    public String toString() {
        return "Person [address=" + address + ", age=" + age + ", weight=" + weight + "]";
    }



}

Теперь я создал основной класс, внутри которого присутствуют детали: -

import java.util.ArrayList;

public class Main {

    Employee e1 = new Employee();
    Person p1 = new Person();

    public static void main(String[] args) {

        ArrayList<Employee> arraylist = new ArrayList<>();
        arraylist.add(new Employee("Somduti", "31-08-1992", "Java"));
        arraylist.add(new Employee("abc", "30-01-1995", "Android"));
        arraylist.add(new Employee("xyz", "24-12-1988", "DotNet"));
        arraylist.add(new Employee("Sanj", "01-10-1986", "IOS"));
        arraylist.add(new Employee("Pink", "19-07-1991", "ETL"));

        System.out.println(arraylist);

        ArrayList<Person> arraylist1 = new ArrayList<>();
        arraylist1.add(new Person("India", 27, 57));
        arraylist1.add(new Person("US", 22, 64));
        arraylist1.add(new Person("Australia", 31, 69));
        arraylist1.add(new Person("France", 33, 77));
        arraylist1.add(new Person("Germany", 28, 55));

        System.out.println(arraylist1);

    }

}

Я хочу добавить два объекта и распечатать результат, как показано ниже: -

name=Somduti, DOB=31-08-1992, techicalSkill=Java address=India, age=27, weight=57

Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

Я думаю, что вы хотите достичь отношения между сотрудниками и людьми. Есть разные способы сделать это. Вот два распространенных решения:

  • Ассоциация: добавьте персональное поле в класс сотрудника. Это выглядит как: "частное лицо"; в пределах класса сотрудников.
  • Наследование: Сотрудник - это определенный c тип лица, так что вы можете позволить сотруднику "расширять" класс лица. Это выглядит так: publi c class Сотрудник расширяет Person ...

Оба способа имеют свои преимущества и недостатки. Например: Наследование - это крепкие отношения, которые вам могут понадобиться в этом случае. Ассоциация - это более слабый тип отношений, поэтому вы можете «заменить» информацию о сотруднике сотрудника (что может быть нежелательно, если вы хотите).

0 голосов
/ 03 февраля 2020

Добавьте следующее дополнительное поле в класс Employee следующим образом:

public class Employee {

  private String name;
  private String DOB;
  private String techicalSkill;
  private Person person; // Additional field

  Employee() {

  }


  /**
   * @param name
   * @param dOB
   * @param techicalSkill
   * @param person
   */
  public Employee(final String name, final String dOB, final String techicalSkill, final Person person) {
    super();
    this.name = name;
    this.DOB = dOB;
    this.techicalSkill = techicalSkill;
    this.person = person; //additional argument in Constructor
  }

}

PS: без изменений в классе Person

Test Main:

 Person person = new Person("India", 27, 57);
 Employee employee = new Employee("Somduti", "31-08-1992", "Java", person);

 System.out.println("name= " + employee.getName() + ", DOB= " + employee.getDOB() + ",techicalSkill= " +
 employee.getTechicalSkill() + " address= " + employee.getPerson().getAddress() + ", age= " +
 employee.getPerson().getAge() + " weight= " + employee.getPerson().getWeight());

Выход :

name= Somduti, DOB= 31-08-1992,techicalSkill= Java address= India, age= 27 weight= 57
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...