zoukankan      html  css  js  c++  java
  • 反射创建Class的几种方法

    参考链接:https://blog.csdn.net/sam_linux/article/details/12918797

    import java.lang.reflect.*;
    import java.util.ArrayList;
    
    public class TestGetClass {
    
        public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException {
            //第一部分:获得类   获得类Class的三种方式
            //1、Object.getClass() 只对引用类型有效(即必须是实例对象)
            Class strClass = "hello".getClass();
            ArrayList list = new ArrayList();
            Class listClass = list.getClass();
            System.out.println(".getClass()  [strClass=" + strClass + ",listClass=" + listClass + "]");
            //2、类型.class,基础数据类型如此获得,(数据类型.class,实例对象不可以)
            Class<Integer> intClass = int.class;
            Class<String> str2Class = String.class;
            Class<int[]> intArrClass = int[].class;
            System.out.println(".class  [intClass=" + intClass + ",str2Class=" + str2Class + ",intArrClass=" + intArrClass + "]");
            //3、Class.forName()根据类路径获得
            //Class<?> mysqlFNClass = Class.forName("com.mysql.jdbc.Driver");
            Class<?> dFNClass = Class.forName("java.lang.Double");
            Class<?> strFNClass = Class.forName("java.lang.String");
            System.out.println("Class.forName  [mysqlFNClass=mysqlFNClass" + ",dFNClass=" + dFNClass + ",strFNClass=" + strFNClass + "]");
            //基本数据类型可以通过包裹类属性获得
            Class<Double> dTYPE = Double.TYPE;
            Class<Void> voidClass = Void.TYPE;
            System.out.println(".TYPE [dTYPE=" + dTYPE + ",voidClass=" + voidClass + "]");
    
            //第二部分:检测类(Class)的修饰符和类型
            /**
             * 访问修饰符:public,protected,private
             * 需要重写的修饰符: abstract
             * 限制只能有一个实例的修饰符:static
             * 防止值被修改的修饰符:final
             * 强制严格的浮点行为的修饰符:strictfp
             * 注释Annotations
             */
    //        Modifier.toString(list.getModifiers()); // c 是一个类
    //        TypeVariable[] tv = list.getTypeParameters();
    //        Type[] intfs = list.getGenericInterfaces();
            //第三部分:发现类成员(Members)
            Class<? extends User> uClass = (new User()).getClass();
            System.out.println("uClass=" + uClass);
            Field[] declaredFields = uClass.getDeclaredFields();
            for (Field field : declaredFields) {
                System.out.println("field=" + field.getName());
            }
            Field id = uClass.getDeclaredField("id");//getDeclaredField是可以获取一个类的所有字段.
            System.out.println("id=" + id);
            Field id1 = uClass.getField("id1"); //getField只能获取类的public 字段.
            System.out.println("id1=" + id1);
    
            Method[] uMethods = uClass.getDeclaredMethods();
            for (Method m : uMethods) {
                System.out.println("method=" + m.getName());
            }
            System.out.println("package="+uClass.getPackage().getName());
        }
    }
    

      

  • 相关阅读:
    API函数
    平台调用教程
    查看网页源文件方法
    网页端商品链接转换为手机端链接的部分网址规则
    中文分词消除歧义简单思想
    java 链接数据库时的配置代码
    手机参数更新语句根据Id 可以得到某手机的各种参数
    中文分词—基于Lucene的分词器—支持中英文混合词
    修改Imdict做自己的分词器
    制作可输入的下拉框
  • 原文地址:https://www.cnblogs.com/1020182600HENG/p/12631824.html
Copyright © 2011-2022 走看看