精华内容
下载资源
问答
  • java获取类类型的方法

    千次阅读 2017-02-06 15:00:29
    * 获取某一个类的类型的方法 * @author Administrator * */ public class LeiName { public static void main(String[] args) { //方法一、通过类名调用自身隐含的class静态变量,通过class调用类类型 @...
    package lei;
    /**
     * 获取某一个类的类类型的方法
     * @author Administrator
     *
     */
    public class LeiName {
        public static void main(String[] args) {
    
            //方法一、通过类名调用自身隐含的class静态变量,通过class调用类类型
            @SuppressWarnings("rawtypes")
            Class c1=LeiName.class;
    
            //方法二、通过对象调用该类继承与Object类的getClass方法
            LeiName ln=new LeiName();
            @SuppressWarnings("rawtypes")
            Class c2=ln.getClass();
    
            //方法三、使用Class的forName方法,动态加载类
            @SuppressWarnings("rawtypes")
            Class c3=null;
            try {
                 c3=Class.forName("lei.LeiName");
            } catch (ClassNotFoundException e) {
            }
            System.out.println(c1==c2);
            System.out.println(c2==c3);
        }
    
    }
    结果为true
    展开全文
  • Java获取泛型类的实际类型的实例

    千次阅读 2019-09-20 06:29:54
    在JDK中,最常见的的用法就是容器类的元素类型的指定。以List为例,通过List<元素类型>指定容器中元素的类型。 如果不通过尖括号指定类型,容器中可以添加任何类型的元素,因为在Java中所有对象类型都继承自...

    泛型速解

    泛型是类型的参数。

    强类型

    在JDK中,最常见的的用法就是容器类的元素类型的指定。以List为例,通过List<元素类型>指定容器中元素的类型。
    如果不通过尖括号指定类型,容器中可以添加任何类型的元素,因为在Java中所有对象类型都继承自Object父类,但Java是强类型语言,限定容器内元素的具体类型是推荐的方式。

    共用性

    这样可能会问? 直接在定义List等类时,直接限定元素类型不就可以了吗? 如果这样的化,共用性基本没有, 不同元素类型需要定义不同的List类。

    继承泛型父类获取具体类型的实例

    AbstractService - 泛型抽象父类
    MyService - 继承AbstractService父类,并指定泛型的类型
    在AbstractService中获取实际类型的代码如下:

    	@SuppressWarnings("unchecked")
    	public Class<Object> getActualClass() {
    		// Class<T> tClass = (Class<T>) ((ParameterizedType)
    		// getClass().getGenericSuperclass()).getActualTypeArguments()[0];
    		Class<Object> actualClass = null;
    		Type genType = getClass().getGenericSuperclass();
    		if (!(genType instanceof ParameterizedType)) {
    			actualClass = Object.class;
    		} else {
    			ParameterizedType pt = (ParameterizedType) genType;
    			actualClass = (Class<Object>) pt.getActualTypeArguments()[0];
    		}
    		return actualClass;
    	}
    

    这里有两个主要方法:

    1. getGenericSuperclass() , 获取该类的直接父类
    2. getActualTypeArguments(), 获取泛型类的类型, 也就是T, 该方法返回的是一个数组, 因为对于HashMap<K,V>等会有多个泛型参数。

    完整代码:
    https://github.com/osxm/jcodef/tree/master/jcodef-func/src/main/java/cn/osxm/jcodef/func/generics

    展开全文
  • * @description 两个泛型的类 */ class Person<T1,T2> { } /** * 继承时候,泛型被显式地指定了Integer, Boolean,所以能够被通过反射获取 */ class Student extends Person<Integer,
    import java.lang.reflect.ParameterizedType;
    import java.lang.reflect.Type;
    
    /**
     * @author 长得太帅,要好好反省!
     * @description 两个泛型的类
     */
    class Person<T1,T2> {
    }
    
    /**
     * 继承的时候,泛型被显式地指定了Integer, Boolean,所以能够被通过反射获取
     */
    class Student extends Person<Integer, Boolean> {
    
        public static void main(String[] args) {
    
            Student student = new Student();
            Class clazz = student.getClass();
            //getSuperclass()获得该类的父类
            System.out.println(clazz.getSuperclass());
    
            /**
             * getGenericSuperclass()获得带有泛型的父类
             * Type是 Java 编程语言中所有类型的公共高级接口。它们包括原始类型、参数化类型、数组类型、类型变量和基本类型。
             */
            Type type = clazz.getGenericSuperclass();
            System.out.println(type);
    
            //ParameterizedType参数化类型,即泛型
            ParameterizedType p = (ParameterizedType)type;
            //getActualTypeArguments获取参数化类型的数组,泛型可能有多个
            Class c1 = (Class)p.getActualTypeArguments()[0];
            System.out.println(c1);
            Class c2 = (Class)p.getActualTypeArguments()[1];
            System.out.println(c2);
        }
    }
    
    展开全文
  • JAVA获取类的方法

    2017-03-09 13:47:18
    在类里声明的返回值类型、基本数据类型等有.class方法,获取类的类型,如:int.class、String.class、double.class、void.class等 获取类的全部信息://jni本地方法,java声明,C实现 //要获取类的信息,首先要获取...

    JAVA获取方法信息

    • 在类里声明的返回值类型、基本数据类型等有.class方法,获取类的类类型,如:int.class、String.class、double.class、void.class等
    • 获取类的全部信息:
    
    //jni本地方法,java声明,C实现
    //要获取类的信息,首先要获取类的类类型
    Class c = obj.getClass();   
    
    //获取类名称
    c.getName()
    
    //Method类,方法对象
    //一个成员方法就是一个Method对象
    //getMethods()方法获取的是所有的public的函数,包括由父类继承而来
    //getDeclaredMethods()获取的是所有该类自己声明的方法,不问访问权限
    Method[] ms = c.getMethods();
    
    //得到方法返回值类型
    Class returnType = ms[i].getReturnType();
    
    //得到方法名
    ms[i].getName();
    
    //获取参数类型数组
    Class[] paramTypes = ms[i].getParameterTypes();
    
    
    展开全文
  • Java获取类或接口上泛型类型T方法

    千次阅读 2019-09-19 16:03:41
    前言 实际开发中,泛型使用到处可见。有时候定义接口时,经常使用泛型,而不是指定具体对象,...本篇讲述如何获取类或接口泛型类型(参数化类型ParameterizedType)。 实例 1.定义泛型接口 public interface Res...
  •  * 通过反射获取类属性的类型  * @author test  *  */ public class OtherTest {   private static int i = 1; private static String name = "wang";   public static void main(String[]...
  • private Class&lt;T&gt; clazz; public BaseDao(){ //初始化clazz属性 Type superType = this.getClass().getGenericSuperclass();//getGenericSuperclass:拿到调用者父类类型 if(superType in...
  • 获取组件类型 ...获取特定类型的数组或者实例 public static &lt;T&gt; Class&lt;T[]&gt; getArrayClass(Class&lt;?&gt; T) { T[] array = (T[]) Array.newInstance(T,...
  • import java.lang.reflect.Field;import java.lang.reflect.Method; Class<?>...//通过类的名称反射类//Class<?> cls = Object.getClass();Field field = cls.getDeclaredField("nam...
  • Java获取泛型的类型

    千次阅读 2019-06-23 12:15:13
    * 获取泛型Class对象,不是泛型则返回null */ public static Class<?> getActualTypeArgument(Class<?> clazz) { Class<?> entitiClass = null; Type genericSuperclass = clazz...
  • java类获取T的类型

    2018-10-08 17:22:00
    2019独角兽企业重金招聘Python工程师标准... 这个在运行期会出现泛型擦除情况。  参考:http://www.iteye.com/problems/88739 转载于:https://my.oschina.net/u/3568600/blog/2231495
  • 通过反射获取类属性字段 以及 调用类方法public class ModelClassHelper { public static HashMap&lt;String,Class&gt;
  • JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法(类名,方法名,参数类型,返回值类型);对于任意一个对象,都能够调用它任意的一个方法和属性;这种动态获取的信息以及动态调用...
  • 使用反射和接口编程还能达到解耦合作用,反射制作获取对象是在运行时加载,而new 对象是在编译阶段加载的获取类类型有三种方式: 1.类名.class #相当于每个类都有一个隐藏静态属性 class2. 对象名.getClass...
  • Java获取URL对应文件类型及其后缀主流方法有三种: 1、根据文件头部数据来判断。 通常需要先下载再判断,但是如果想要在下载时候确定文件后缀,就做不到了,而且获取文件类型不是很准确。 2、使用...
  • 本文主要讲述如何获取类的信息,包括类的成员变量和成员函数,首先我们先了解一下,基本的数据类型和void关键字有没有各自的类类型,答案是有的! 一、如何获取基本的数据类型和void关键字的类类型: 代码奉上: ...
  • https://my.oschina.net/roadom/blog/1615450
  • java获取泛型类型

    2017-06-22 13:48:00
    java获取泛型类型 泛型是自java1.5以后引入概念,主要为了弥补java语言强类型特性带来编程上不便。 泛型本质是一种参数化类型,对应java中的类ParameterizedType.java所以,要获取运行时...
  • 一些Java反射API例子。...使用反射遍历一个声明所有字段。 CompanyA.java 01 packagecom.mkyong.test; 02 03 importjava.util.List; 04 importjava.util.Map; 05 i...
  • Java如何获取泛型类型

    2021-01-21 17:09:27
    Java 运行时如何获取泛型参数的类型 Java类型Type 之 ParameterizedType,GenericArrayType,TypeVariabl,WildcardType 从实现的接口获取泛型参数 定义一个泛型父类: public interface SuperClass { String ...
  • 1、泛型GenericInterface package com.demo.generic; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; public class GenericInterface {//泛型中有两个泛型参数 T 和 K
  • 今天搭建框架时候,要获取泛型<T>Class具体例子: @EnableTransactionManagement @Transactional @Repository public class BasicDAO<T> extends HibernateDaoSupport { //实体 private T...
  • Java获取泛型真实类型的方法

    千次阅读 2019-09-07 23:46:00
    获取泛型类的泛型 public abstract class AbstractDao<T> { public Class<T> getActualType() { ParameterizedType parameterizedType = (ParameterizedType) this.getClass().getGenericSupercla...
  • 一般获取具体某个类的class类型,直接调用 getClass()方法或者 .class。但是在一些抽象类 或者 接口中,我们需要获得泛型对应的class类型,以上方法就不再适用。 /** * * 通用service,这里有三个泛型 T,D,ID ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,924
精华内容 3,169
关键字:

java获取类的类型

java 订阅