如何从包含 HashMap 实例的抽象 class 实例化新对象?

How to instantiate a new object from an abstract class containing an instance of a HashMap?

我认为抽象 classes 不能被实例化。但是,我的抽象 class 中有一个 HashMap 实例,我想从中检索对象。有什么办法可以做到这一点?任何见解将不胜感激,提前致谢!

编辑:

我实际上正在寻找一种方法来使用诸如

之类的标记来实例化抽象 class
barnStack.push(new Animal("Cow"));

抽象 classes 无法在 java 中实例化。 java oracle doc

所以你要做的是创建一个新的具体 class 来扩展抽象 class。然后你可以实例化具体的subclass.

class ConcreteClassName extends AbstractClassName{
     //implement all the methods of the abstract class

     //optionaly you can add new methods if you want to
}

// 获取抽象的实例 class

AbstractClassName newObject = new ConcreteClassName();

现在您有了摘要的实例 class。

我假设您指的是这样的结构:

abstract class MyClass {
    private Map<String, String> textMap = new HashMap<>();

    public void addText(String key, String value) {
        textMap.put(key, value);
    }
}

你问的是如果 class 无法实例化,如何使用 textMap。如果这是正确的,那么答案是它可以被抽象 class 中的方法使用(或者如果它是 protected 则为 subclasses)。 MyClass 的 subclass 的任何实例都可以调用将访问 Map.

的方法
class MySubclass extends MyClass {
}

MySubclass myobj = new MySubclass();
myobj.addText("Hello", "World!");

也可以让子class匿名:

MyClass myObj = new MyClass() {};
myobj.addText("Hello", "World!");

但是在这种情况下,superclass 更有可能不是真正抽象的。