Java未绑定的通配符泛型

Java未绑定的通配符泛型

本文介绍了Java未绑定的通配符泛型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


  • 它们记录与原始类型完全不同的内容,即 Foo 在某些未知但特定类型上键入。

    Are there any advantages of using wildcard-type generics in the Bar class over completely skipping them?

    public class Foo<T> {}
    
    public interface Bar {
        public void addFoo(Foo<?> foo);
        public Foo<?> getFoo(String name);
    }
    
    解决方案

    There are multiple advantages.

    • They won't produce compiler warnings like using the raw type would
    • They give more type safety. For example, consider if Foo was List instead. If you used List instead of List<?>, you could do this:

      myBar.getFoo("numbers").add("some string");
      

      even if the list was only supposed to contain Numbers. If you returned a List<?>, then you would not be able to add anything to it (except null) since the type of list is not known.

    • They document something completely different than a raw type, namely that Foo is typed on some unknown but specific type.

    这篇关于Java未绑定的通配符泛型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

  • 09-05 22:11