zoukankan      html  css  js  c++  java
  • Class<T> 与Class<?>

    我们先看下Class<Integer>与 Class<?> 的差异

    Class<Integer> cla、与Class<?> cl;前一个表示cla只能指向Integer这种类型,而后一个cl表示可以指向任意类型。

    cla = Integer.class 可以,但cla = Double.class就不可以。但是cl = Integer.class 可以,cl = Double.class也可以 。

    ?是通配符,Class<Integer> cla再向上抽象,可以表示为泛型 Class<T> cla, 此时Class<Integer> cla或者Class<String> cla都是可以的,作用与Class<?>相同。

    我们来定义一个泛型类,便于理解

    public class Entity<T> {
        private Class<T> entityClass;
    
        public Entity(Class<T> entityClass) {
            this.entityClass = entityClass;
        }
    
        public void getClassType(){
            System.out.println(entityClass.getName());
        }
    }

    测试

    public static void main(String[] args) throws ClassNotFoundException {
    Class<?> cla = Class.forName("java.lang.String");
    System.out.println(cla); // class java.lang.String
    Class<Integer> clb = Integer.class;
    System.out.println(clb); // class java.lang.Integer
    cla = Double.class;
    System.out.println(cla); // class java.lang.Double

    new Entity<>(Long.class).getClassType(); // java.lang.Long
    new Entity<>(Void.class).getClassType(); // java.lang.Void
    }
    java基础知识
  • 相关阅读:
    LeetCode 12. 整数转罗马数字
    [Python] for in range()使用以及列表字符串反转方法
    组合数问题
    「BJOI2020」封印
    数据结构优化建图
    小Q与找茬
    无旋Treap学习
    jzoj5679
    数星星
    凸性
  • 原文地址:https://www.cnblogs.com/zhihongShee/p/14193274.html
Copyright © 2011-2022 走看看