zoukankan      html  css  js  c++  java
  • Java反射

    一、反射机制有关的类大多在java.lang.reflect包中。

    常用类:

        java.lang.Class<T>  类类型

        java.lang.reflect.Method  方法类型

        java.lang.reflect.Field  字段类型

    二、常用方法:

    获得类的类类型:

    Class cla1=String.class;
    Class cla2=UserEntity.class;

    try {
    	Class cla=Class.forName("UserEntity");
    } catch (ClassNotFoundException e1) {
    	e1.printStackTrace();
    }

    Class	clazz 	=	 obj.getClass ();

    根据类名创建类的对象:

    String	 className 	=	 "com.xyz.entity.Car ";	
    Object	 obj 	=	 Class.forName (className ).newInstance();
    获取方法:
    使用Class类中的方法:
    public Method getMethod(String name,
                            Class<?>... parameterTypes);//获取类的指定方法。第一个参数:方法名;第二个参数:方法中参数的类型
    
    public Method[] getMethods();//获取类的全部方法
    

    示例:

    Method	method	=	 clazz.getMethod("start" );

    执行方法:

    method.invoke(obj); 

    获得类中的字段:

    public Field getDeclaredField(String name);
    public Field[] getDeclaredFields();
    //Field类中
    String fieldName=field.getName();//获得字段的属性名
    Class fieldType=field.getType();//获得字段的属性值
    String typeStr=fieldType.toString();//结果:class java.lang.String

    还有(下面这两个还没用过):

    public Field getField(String name);
    public Field[] getFields();

    获得类的属性值:

    Field类中的方法:

    public Object get(Object obj);
    

    使用示例:

    TestEntity testEntity = new TestEntity();
    Field[] fds = Class.forName("com.xyz.entity.TestEntity").getDeclaredFields();
    for(int i=0;i<fds.length;i++)
    {
    	System.out.println(fds[i].get(testEntity));
    }

    三、在项目中的应用

        如:java反射执行实体类中的set/get方法。例子:java反射执行pojo中的set/get方法  

    待续……

  • 相关阅读:
    bzoj3401[Usaco2009 Mar]Look Up 仰望*
    bzoj2021[Usaco2010 Jan]Cheese Towers*
    bzoj3767A+B Problem加强版
    bzoj3942[Usaco2015 Feb]Censoring*
    bzoj1673[Usaco2005 Dec]Scales 天平*
    bzoj3670[Noi2014]动物园
    stark——pop功能(admin中添加功能)
    stark——快速过滤list_filter
    stark——分页、search、actions
    stark——增删改页面
  • 原文地址:https://www.cnblogs.com/mySummer/p/4104114.html
Copyright © 2011-2022 走看看