Самостоятельно назначить объект его дочерний объект в конструкторе - PullRequest
0 голосов
/ 26 апреля 2018

Допустим, у нас есть:

Класс Item:

public class Item {
    private Type type;

    Item(Type type) {
        this.type = type;

        if (type == Type.PISTOL || type == Type.AR || type == Type.SNIPER_RIFLE) {
            this = new Weapon(type);
        }
    }

}

А класса Weapon унаследовано от Item:

public class Weapon extends Item {

    Bullet.Type bulletType;
    int fireRate;

    public Weapon(Type type) {
        this.type = type;
    }
}

И он вызывается откуда-то вроде:

Item item = new Item(Item.Type.PISTOL);

На самом деле я знаю, что this нельзя назначить в Java, но мне интересно, как я могу решить эту ситуацию.

Я хочу назначить item new Weapon, если его тип подходит.

1 Ответ

0 голосов
/ 26 апреля 2018

Предлагаю построить так:

public static Item create(Type type) {
    if (type == Type.PISTOL || type == Type.AR || type == Type.SNIPER_RIFLE) {
        return new Weapon(type);
    } else {
        return new Item(type);
    }
}
...