Java中的通用接口

时间:2018-06-02 03:01:10

标签: java generics

我正在阅读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}}

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";
    }
};
相关问题