美文网首页
java反射的基础操作

java反射的基础操作

作者: Bruce杨 | 来源:发表于2018-03-19 16:04 被阅读0次
package com.bruce.demo;
import com.bruce.demo.domain.Student;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Test {
    public static void main(String[] args) throws Exception {
        try {
            Person person = new Person();
            Class clazz = person.getClass();
            /**
             * 获取类定义的变量
             */
            Field field = clazz.getDeclaredField("name");
            //取消java语言访问检查以访问private变量
            field.setAccessible(true);
            field.set(person, "jack");
            System.out.println(person.getName());
            /**
             * 获取类定义的方法
             */
            Method method = clazz.getDeclaredMethod("setTall", int.class);
            method.setAccessible(true);
            // 通过反射调用类定义的方法
            method.invoke(person, 178);
            System.out.println(person.getTall());
            /**
             * 获取类构造函数
             */
            Constructor[] cons = clazz.getConstructors();
            for (@SuppressWarnings("rawtypes")
                    Constructor c : cons) {
                System.out.println(c + " " + c.getDeclaringClass());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
package com.bruce.demo;

/**
 * 测试反射的类
 */
public class Person {
    private String name;
    private int tall;

    public Person() {

    }

    public Person(String name) {
        this.name = name;
    }

    public Person(int tall) {
        this.tall = tall;
    }

    public Person(String name, int tall) {
        this.name = name;
        this.tall = tall;
    }

    public String getName() {
        return name;
    }

    public int getTall() {
        return tall;
    }

    private void setTall(int tall) {
        this.tall = Integer.valueOf(tall);
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", tall=" + tall +
                '}';
    }
}

相关文章

  • Java基础:反射

    反射注解动态代理相关阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 ...

  • java反射的基础操作

  • Java基础之反射

    Java基础之—反射(非常重要)Java中反射机制详解Java进阶之reflection(反射机制)——反射概念与...

  • Java的反射机制

    反射机制是Java提供的一种基础功能,赋予程序在运行时自醒的能力,正式因为反射,Java可以操作类或者对象,比如获...

  • Java基础之反射

    Java基础之反射 反射基本介绍 反射的使用通过反射调用属性和方法通过反射获取配置文件 反射基本介绍 Java反射...

  • Java基础:注解

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 1. 概述 注解...

  • java 反射基础

    1.java反射基础 2.java反射进阶 反射的两个显著的作用 反编译: .class —> .java 通过...

  • java 反射进阶

    1.java反射基础 2.java反射进阶 上一节介绍了反射基础,本节介绍更深入的反射概念。 1.获取不到Clas...

  • Java高级知识

    反射 sczyh30 深入解析Java反射(1) - 基础深入解析Java反射(2) - invoke方法深入探究...

  • Java基础:动态代理

    系列阅读 Java基础:类加载器 Java基础:反射 Java基础:注解 Java基础:动态代理 概述 在运行时,...

网友评论

      本文标题:java反射的基础操作

      本文链接:https://www.haomeiwen.com/subject/cjspqftx.html