码迷,mamicode.com
首页 > 编程语言 > 详细

Java 反射的基本应用

时间:2016-11-24 15:20:14      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:blog   row   获取   sts   out   tty   res   read   ddr   

package com.lf.testreflection;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

import org.junit.Test;

public class ClassTest{
    
    @Test
    public void testSomthing()throws Exception {
        //创建运行时类的对象
        Class cla = Person.class;
        // 创建运行时Person的对象
        Person person = (Person)cla.newInstance();
        // 通过cla获取对象的属性
        Field field = cla.getDeclaredField("name");
        // 设置可以访问的权限
        field.setAccessible(true);
        // 设置相应的属性值
        field.set(person, "kity");
        //获取相应的属性(public可以使用下面方法获取)
        field = cla.getField("address");
        field.set(person, "NewYo");
        field = cla.getDeclaredField("age");
        field.setAccessible(true);
        field.set(person, 18);
        
        System.out.println(person);
        // 获取无参方法
        Method method = cla.getMethod("learn");
        method.invoke(person);
        // 获取有参方法
        Method method2 =cla.getMethod("readSomething",String.class);
        method2.invoke(person, "ainsy");
        // 获取多参方法
        Method method3 =cla.getMethod("readSomething",int.class,String.class);
        method3.invoke(person, 20,"ainsy");
        // 获取所有的属性
        Field[] fields = cla.getDeclaredFields();
        for (Field field2 : fields) {
            // 每个属性的修饰符
            System.out.print(field2.getModifiers()+"  ");
            // 每个属性名
            System.out.print(field2.getName()+"  ");
            // 获取属性的类型
            Class type = field2.getType();
            System.out.println(type);
        }    
        
        // 调用运行时本身的.class属性
        Class cla2 = Person.class;
        //打印类路径
        System.out.println(cla2.getName());
        
        // 通过运行时类的对象获取
        Person p = new Person();
        Class cla3 = p.getClass();
        System.out.println(cla3.getName());
    }
}

 

Java 反射的基本应用

标签:blog   row   获取   sts   out   tty   res   read   ddr   

原文地址:http://www.cnblogs.com/lantu1989/p/6097371.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!