我正在阅读https://docs.oracle.com/javase/tutorial/java/generics/types.html中的教程。
代码:
Pair<String, Integer> p1 = new OrderedPair<String, Integer>("Even", 8);
Pair<String, String> p2 = new OrderedPair<String, String>("hello",
"world");
但是上面的代码,我无法掌握。
Pair<String, Integer> p1 = new OrderedPair<String, Integer>("Even", 8);
OrderPair<String, Integer> p2 = new OrderedPair<String, Integer>("Even", 8);
这似乎是创建一个Interface对象,但根据我对c ++中OOP的理解,创建一个Abstract Class对象是不可能的(我的理解是Interface在某种程度上就像抽象类)。需要一个更具体的答案“如何创建这样的对象?”
被修改
我被建议在Instantiating interfaces in Java查看答案。
以下两种情况下对象实例化之间的区别是什么:
{{1}}
答案 0 :(得分:1)
您实际上并未实例化接口。您正在实例化一个实现该接口的类,然后将该对象保存到接口类型的变量中。
实例化界面将是这样的,你不能这样做。
Pair<String, Integer> p1 = new Pair<>("Even", 8);
但是,您可以将其设为匿名类。
Pair<String, String> p2 = new Pair<String, String>() {
@Override
public String getKey() {
return "hello";
}
@Override
public String getValue() {
return "world";
}
};