@Balticman
писатель самоучка

Проблема с инициализацией объекта (конструктор), что я делаю не так?

Доброго времени суток!
Недавно начал изучать Java и споткнулся на конструкторах.

package com.company.personidentity;

public class Main {
    public static void main(String[] args) {
       Person person1 = new Person("Harry Potter", 40, "Baker street 20","Manchester","United Kingdom");
    }
}


Intellij IDEA уже подсказывает, что имеется несоответствие типов, у меня имеется тип Address, а я вроде как подсовываю String. Как эту проблему решить? Хочу, чтобы адрес был отдельным классом
package com.company.personidentity;

public class Person {
    private String name;
    private int age;
    private Address address;
    private Address city;
    private Address country;

    public Person(String name, int age, Address address, Address city, Address country) {
        this.name = name;
        this.age = age;
        this.address = address;
        this.city = city;
        this.country = country;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", address=" + address +
                ", city=" + city +
                ", country=" + country +
                '}';
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    public Address getCity() {
        return city;
    }

    public void setCity(Address city) {
        this.city = city;
    }

    public Address getCountry() {
        return country;
    }

    public void setCountry(Address country) {
        this.country = country;
    }
}

package com.company.personidentity;

public class Person {
    private String name;
    private int age;
    private Address address;
    private Address city;
    private Address country;

    public Person(String name, int age, Address address, Address city, Address country) {
        this.name = name;
        this.age = age;
        this.address = address;
        this.city = city;
        this.country = country;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", address=" + address +
                ", city=" + city +
                ", country=" + country +
                '}';
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    public Address getCity() {
        return city;
    }

    public void setCity(Address city) {
        this.city = city;
    }

    public Address getCountry() {
        return country;
    }

    public void setCountry(Address country) {
        this.country = country;
    }
}
  • Вопрос задан
  • 123 просмотра
Решения вопроса 2
вроде как подсовываю String. Как эту проблему решить? Хочу, чтобы адрес был отдельным классом
Ну так сделайте отдельный класс и передавайте его, в чём проблема-то?
new Person("Harry Potter", 40, new Address("Baker street 20"), new Address("Manchester"), new Address("United Kingdom"));


Другой вопрос - почему у вас улица, город и страна одного типа...
Ответ написан
Комментировать
CellycoMobiles
@CellycoMobiles
indi developer @CellycoMobiles
Тип String передаете, как тип Address

"Baker street 20" instanceOf Address == false

Переделайте :

public Person(String name, int age, Address address) {
...
}

new Person("Harry Potter", 40, new Address("Baker street 20","Manchester","United Kingdom"))

class Address {
private String address;
    private String city;
    private String country;
public Address(String address, String city, String country){
...
}
}


* P.S. От бойлерплейта глаза болят. Read JEP 269.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы