• 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基础知识
  • 相关阅读:
    IE, FireFox, Opera 浏览器支持CSS实现Alpha半透明的方法
    5个CSS3技术实现设计增强
    SQL Server 2005 中的分区表和索引
    推荐12款可用于前端开发的免费文本编辑器
    960 Grid System
    初识Byte
    在线制作网站
    sqlserver操作符篇 优化
    ASP.NET 异常处理
    Photoshop 隐藏的快捷键
  • 原文地址:https://www.cnblogs.com/zhihongShee/p/14193274.html
Copyright © 2020-2023  润新知