如何从包含 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 更有可能不是真正抽象的。
我认为抽象 classes 不能被实例化。但是,我的抽象 class 中有一个 HashMap 实例,我想从中检索对象。有什么办法可以做到这一点?任何见解将不胜感激,提前致谢!
编辑:
我实际上正在寻找一种方法来使用诸如
之类的标记来实例化抽象 classbarnStack.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 更有可能不是真正抽象的。