小编Ily*_*ich的帖子

Java:在方法返回中使用泛型,它与泛型类参数不同


    class SomeClass<E> {
       Map<String, String> someMethod();
    }

和用法


    SomeClass a = new SomeClass();
    a.someMethod().get("foo") // returns object, not string!

    //This code would not even compile
    String s = a.someMethod().get("foo");

但是,如果我从SomeClass中删除泛化(<E>) - 它可以工作.

如果我将此方法提取到接口并在声明中使用接口,它也可以工作:


    interface Foo {
     Map<String, String> someMethod();
    }

    class SomeClass implements Foo {
    //.....
    }

    Foo foo = new SomeClass();

    String s = foo.someMethod().getString("A");//it works

为什么会这样?我在哪里可以阅读它?什么是最好的解决方案?谢谢.

java generics

4
推荐指数
1
解决办法
178
查看次数

标签 统计

generics ×1

java ×1