博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过Relect反射方法创建对象,获得对象的方法,输出对象信息
阅读量:5060 次
发布时间:2019-06-12

本文共 3370 字,大约阅读时间需要 11 分钟。

package reflects;import java.lang.reflect.Constructor;import java.lang.reflect.Field;import java.lang.reflect.Method;import io.Person;//通过Relect反射方法创建对象,输出对象信息public class ReflectDemo1 {    public static void main(String[] args) {        try {            // 1、获得目标对象的类型            Class cl = Class.forName("io.Person");            // 2、获得对象的构造方法            Constructor ct = cl.getDeclaredConstructor();            // 3、创建对象            Person p = (Person) ct.newInstance();            // 4、获得对象的属性,赋值            Field name = cl.getDeclaredField("name");            Field age = cl.getDeclaredField("age");            Field gender = cl.getDeclaredField("gender");            // 5、设置属性访问权限,无论属性的访问修饰符是什么级别true表示可见            name.setAccessible(true);            age.setAccessible(true);            gender.setAccessible(true);            // 6、设置属性的值            name.set(p, "Tom");            age.set(p, 20);            gender.set(p, "男");            // 7、获得对象的方法            Method mt = cl.getDeclaredMethod("toShow", String.class);            // 8、通过反射调用p对象的toshow方法            String st = (String) mt.invoke(p, "Refect反射");            System.out.println(st);        } catch (Exception e) {            e.printStackTrace();        }    }}**********************************************************************************************package io;import java.io.Serializable;//人类Person实现Serializable接口,实现序列化public class Person implements Serializable {    private String name;// 姓名    private Integer age;// 年龄    private String gender;// 性别    public Person() {    }    public Person(String name, Integer age, String gender) {        this.name = name;        this.age = age;        this.gender = gender;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }    public String getGender() {        return gender;    }    public void setGender(String gender) {        this.gender = gender;    }    @Override    public String toString() {        return "Person [name=" + name + ", age=" + age + ", gender=" + gender + "]";    }    public String toShow(String st) {        return "通过" + st + "方法调用输出:Person [name=" + name + ", age=" + age + ", gender=" + gender + "]";    }    @Override    public int hashCode() {        final int prime = 31;        int result = 1;        result = prime * result + age;        result = prime * result + ((gender == null) ? 0 : gender.hashCode());        result = prime * result + ((name == null) ? 0 : name.hashCode());        return result;    }    @Override    public boolean equals(Object obj) {        if (this == obj)            return true;        if (obj == null)            return false;        if (getClass() != obj.getClass())            return false;        Person other = (Person) obj;        if (age != other.age)            return false;        if (gender == null) {            if (other.gender != null)                return false;        } else if (!gender.equals(other.gender))            return false;        if (name == null) {            if (other.name != null)                return false;        } else if (!name.equals(other.name))            return false;        return true;    }}

 

转载于:https://www.cnblogs.com/lanseyitai1224/p/7892796.html

你可能感兴趣的文章
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
发送请求时params和data的区别
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>
一步步学习微软InfoPath2010和SP2010--第七章节--从SP列表和业务数据连接接收数据(4)--外部项目选取器和业务数据连接...
查看>>
如何增强你的SharePoint 团队网站首页
查看>>
FZU 1914 Funny Positive Sequence(线性算法)
查看>>
oracle 报错ORA-12514: TNS:listener does not currently know of service requested in connec
查看>>
基于grunt构建的前端集成开发环境
查看>>
MySQL服务读取参数文件my.cnf的规律研究探索
查看>>
java string(转)
查看>>
__all__有趣的属性
查看>>
写博客
查看>>
利用循环播放dataurl的视频来防止锁屏:NoSleep.js
查看>>
python3 生成器与迭代器
查看>>
java编写提升性能的代码
查看>>
ios封装静态库技巧两则
查看>>
Educational Codeforces Round 46 (Rated for Div. 2)
查看>>
Abstract Factory Pattern
查看>>