Вопрос по конструктору.

 
 
 
Сообщения:4
package dating.constructor;

public class User {
    String name;
    short age;
    int height;
    static int count = 0;

    User(String name, short age, int height) {
        this.name = name;
        this.age = age;
        this.height = height;
        count++;
    }
    User(String name, int height, short age){
        this.name = name;
        this.height = height;
        this.age = age;
        count++;
    }
    User(short age, String name, int height){
        this.age = age;
        this.name = name;
        this.height = height;
        count++;
    }
    User(int height, String name, short age){
        this.height = height;
        this.name = name;
        this.age = age;
        count++;
    }
    User(short age, int height, String name) {
        this.age = age;
        this.height = height;
        this.name = name;
        count++;
    }
    User(int height, short age, String name) {
        this.height = height;
        this.age = age;
        this.name = name;
        count++;
    }
    public static void main(String[] args) {
        User user1 = new User((short) 31, 178, "Васян с падика");
        User user2 = new User("Анка пулеметчица", 189, (short) 30);
        System.out.println(user1.name);
    }
}

Подскажите, если в конструкторе не будет short, то как будет выбирать между 2-мя, к примеру, int?
 
 
Сообщения:948
никак. цифры без каста всегда int и ява будет возмущаться, что ты у неё требуешь методу, которой у неё нет.
 
 
Сообщения:4
windruf:
никак. цифры без каста всегда int и ява будет возмущаться, что ты у неё требуешь методу, которой у неё нет.

А не могли бы вы привести пример большого конструктора? Если надо много цифр вводить то перебираются простейшие типы а потом создаются новые собственные классы и присваевается значение к примеру int?
 
 
Сообщения:948
обычно делают один конструктор на каждый набор данных.
class User
{
    String name;
    int age;
    int height;

    // полный набор данных
    public User(String name, int age, int height)
    {
        this.name = name;
        this.age = age;
        this.height = height;
    }

    // урезанный набор данных. типа новорожденный
    public User(String name, int height)
    {
        this.name = name;
        this.age = 0;
        this.height = height;
    }

проблема, что можно спутать какое значение идёт на какое место. для этого, обычно, вставляют проверки входящих данных. проблема мелкая, ошибка легко находится и исправляется.
 
 
Сообщения:100
package dating.constructor;
 
public class User {
    String name;
    short age;
    int height;
    static int count = 0;
 
    public static void main(String[] args) {
        User user1 = new User.Builder().
            age((short)31).height(178).name("Васян с падика").build();
        User user2 = new User.Builder().
            name("Анка пулеметчица").height(189).age((short)30).build();
        System.out.println(user1.name);
    }

    private User(Builder b) {
        name   = b.name;
        age    = b.age;
        height = b.height;
        count++;
    }

    public static class Builder {
        private String name;
        private short age;
        private int height;

        public Builder name(String n) { name = n; return this; }
        public Builder age(short a)   { age = a; return this; }
        public Builder height(int h)  { height = h; return this; }

        public User build() { return new User(this); }
    }
}
 
Модераторы:frymock
Сейчас эту тему просматривают:Нет