Создание объекта в методе

159
13 января 2020, 06:50

В классе User добавить метод setContacts с параметрами: String email, String phoneNumber. В этом методе должен создаватся объект класса Contacts, и присваиватся в поле contacts класса User. Я создаю объект в методе но он ругает и не знаю что делать подскажите плз.

public class User {

String name;
int age;
int gender;
Contacts contacts;
public User(String name, int age, int gender) {
    this.name = name;
    this.age = age;
    this.gender = gender;
}
public User(String name, int age, int gender, Contacts contacts) {
    this.name = name;
    this.age = age;
    this.gender = gender;
    this.contacts = contacts;
}
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 int getGender() {
    return gender;
}
public void setGender(int gender) {
    this.gender = gender;
}
public Contacts getContacts() {
    return contacts;
}
public void setContacts(Contacts contacts) {
    this.contacts = contacts;
}
@Override
public String toString() {
    return "User{" + "name=" + name + ", age=" + age + ", gender=" + gender + ", contacts=" + contacts + '}';
}
private static class GenderFlags {
    final int NOT_SPECIFIED = 0;
    final int MALE = 1;
    final int FEMALE = 2;
}
class Contacts {
    String email;
    String phoneNumber;
    public Contacts(String email, String phoneNumber) {
        this.email = email;
        this.phoneNumber = phoneNumber;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getPhoneNumber() {
        return phoneNumber;
    }
    public void setPhoneNumber(String phoneNumber) {
        this.phoneNumber = phoneNumber;
    }
    @Override
    public String toString() {
        return "Contacts{" + "email=" + email + ", phoneNumber=" + phoneNumber + '}';
    }
}
public void setContacts(String email, String phoneNumber){
  Contacts cs = new Contacts();
}

}

Answer 1

ты забыл присвоить локальную переменную в поле класса

public void setContacts(String email, String phoneNumber){
  Contacts cs = new Contacts(email, phoneNumber);
  setContacts(cs);
}

тут я воспользовался уже реализованным методом - может быть, ты захочешь еще что-то там сделать

Answer 2

Уберете class qew с main методом и восстановите модификаторы доступа к классам, а так все работает, метод setContacts с параметрами в User , который принимает 2 значения и создает новый объект, который присваивается полю. Если я ,конечно, правильно понял реализацию, так как в вашем выложенном коде был не корректно расположены символ }.

class qew{ 
public static void main(String[] args){ 
User u = new User("Name",92,1); 
u.setContacts("asdasdad@yandex.ru","99938492"); 
Contacts c = u.getContacts();  
System.out.println(c.getEmail()  + " -    Email   "  + c.getPhoneNumber() + "  Phone Contacts "); 
} 
} 
 
 
class User { 
String name; 
int age; 
int gender; 
Contacts contacts; 
 
public User(String name, int age, int gender) { 
    this.name = name; 
    this.age = age; 
    this.gender = gender; 
} 
 
public User(String name, int age, int gender, Contacts contacts) { 
    this.name = name; 
    this.age = age; 
    this.gender = gender; 
    this.contacts = contacts; 
} 
 
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 int getGender() { 
    return gender; 
} 
 
public void setGender(int gender) { 
    this.gender = gender; 
} 
 
public Contacts getContacts() { 
    return contacts; 
} 
 
public void setContacts(Contacts contacts) { 
    this.contacts = contacts; 
} 
// setContacts !!! 
public void setContacts(String email, String phoneNumber){ 
   this.contacts = new Contacts(email,phoneNumber); 
} 
 
@Override 
public String toString() { 
    return "User{" + "name=" + name + ", age=" + age + ", gender=" + gender + ", contacts=" + contacts + '}'; 
} 
} 
class GenderFlags { 
 
    final int NOT_SPECIFIED = 0; 
    final int MALE = 1; 
    final int FEMALE = 2; 
 
} 
 
class Contacts { 
 
    String email; 
    String phoneNumber; 
 
    public Contacts(String email, String phoneNumber) { 
        this.email = email; 
        this.phoneNumber = phoneNumber; 
    } 
 
    public String getEmail() { 
        return email; 
    } 
 
    public void setEmail(String email) { 
        this.email = email; 
    } 
 
    public String getPhoneNumber() { 
        return phoneNumber; 
    } 
 
    public void setPhoneNumber(String phoneNumber) { 
        this.phoneNumber = phoneNumber; 
    } 
 
    @Override 
    public String toString() { 
        return "Contacts{" + "email=" + email + ", phoneNumber=" + phoneNumber + '}'; 
    } 
}

READ ALSO
Malformed Json Exception

Malformed Json Exception

Когда компилирую в NetBeans, то всё работает отлично, json парсится без проблемТолько собираю проект, и когда запускаю jar файл, то вылетает такая...

191
Postgresql взять подстроку по совпадению LIKE

Postgresql взять подстроку по совпадению LIKE

Существует ли способ сразу из Postgresql достать подстроку, найденную с помощью LIKE? Есть таблица, в одном из столбцов храниться текст комментариев...

174
Error:java: error: release version 5 not supported

Error:java: error: release version 5 not supported

Такая проблем уже не впервые, не помню как получилось решить, вроде бы новый проект создавалКрч есть класс, есть метод main() и есть System

235
Разрешение приложений

Разрешение приложений

Есть ли способ каким-либо образом доставать для каждого разрешения для приложения краткую информацию об этом разрешений?

190