java - 在构造函数中自分配对象其子对象

标签 java inheritance constructor variable-assignment

假设我们有:

项目:

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新的Weapon(如果它的类型合适)。

最佳答案

我建议这样构建:

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);
    }
}

关于java - 在构造函数中自分配对象其子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50043497/

相关文章:

java - JSON对象映射器: avoid listing derived class in serialized JSON string

java - 将 SOAP 响应反序列化到生成的类 C#

c++ - 在C++中,接受基类的构造函数算作复制构造函数吗?

php - 抽象类是否有可能强制其子级在 PHP 中拥有构造函数?

c++ - 调用未知 child 的构造函数

java - 四个不同的 wsdl2java 应用程序无法导入 wsdl,但 SoapUI 可以正常导入

java - Spring请求映射到特定路径变量值的不同方法

java - 组织.hibernate.InstantiationException : Cannot instantiate abstract class or interface

c++ - 将私有(private)参数中继到派生类虚拟方法

language-agnostic - HTML解析类的构造函数应该做多少工作?