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基础知识
  • 相关阅读:
    第三次实验总结
    实验总结
    自我介绍
    BGP学习笔记
    source insight用于C语言编程的工具脚本
    LevelDB源码剖析
    LevelDB源码之五Current文件Manifest文件版本信息
    LevelDB源码之六缓存机制
    LevelDB源码之四LOG文件
    jQuery向动态生成的内容添加事件响应
  • 原文地址:https://www.cnblogs.com/zhihongShee/p/14193274.html
Copyright © 2011-2022 走看看