泛型(Generic) 通配符<?>

青旅半醒 2024-03-22 17:10 170阅读 0赞

引入通配符<?>

  1. class Message<T> {
  2. private T message;
  3. public T getMessage() {
  4. return message;
  5. }
  6. public void setMessage(T message) {
  7. this.message = message;
  8. }
  9. }
  10. public static void fun1(Message<String> temp) {
  11. System.out.println(temp.getMessage());
  12. }
  13. public static void fun2(Message<Integer> temp) {
  14. System.out.println(temp.getMessage());
  15. }

fun1(Message<String> temp)fun2(Message<Integer> temp) 仅类型不同,方法内容都一样,可不可以抽取成共通方法呢 ?

通配符<?>就可以解决这个问题。通配符可以解决参数统一问题,把方法和泛型参数解耦

  1. public static void fun(Message<?> temp) {
  2. System.out.println(temp.getMessage());
  3. }
  4. Message<String> msg1 = new Message();
  5. msg1.setMessage("hello world");
  6. fun(msg1);// hello world
  7. Message<Integer> msg2 = new Message();
  8. msg2.setMessage(100);
  9. fun(msg2);// 100

通配符 <?>类型参数 的区别

对编译器来说所有的 T 都代表同一种类型。要么都是 String,要么都是 Integer 。但通配符<?>没有这种约束,String 可以,Integer 可以… Plate<?> 表示盘子里放啥都可以!

发表评论

表情:
评论列表 (有 0 条评论,170人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java通配符

    Java泛型是一种强类型约束机制,可以在编译时检查类型安全,防止类型转换错误。通配符是Java泛型的一个重要特性,可以帮助我们更灵活地使用泛型。 什么是泛型通配符? 泛

    相关 通配符

    > 在看Java核心技术卷I中泛型通配符相关的知识时产生了很多疑问,通过了解后简单的做下笔记方便回顾。 > 本文重点记录了一下这几个问题: > > 为什么要用泛型通