Java反射的基础使用
来源:互联网 发布:qq视频播放器 mac 编辑:程序博客网 时间:2024/05/17 08:08
啥也不说,直接上代码。
//性别枚举
public enum Sex{ Man, Woman;}
//抽象基类
public abstract class Person{ //定义人的基本属性,姓名 + 性别 public String name; public Sex sex;}
//定义Lily
public class Lily extends Person{ //Lily,对女孩来说,年龄、体重、外号都是秘密 private int age = 20; private int weight = 52; private String alia = "Little fox"; public Lily() { this.name = "Lily"; this.sex = Sex.Woman; } /** * 基本信息,访问权限 - 公共 * * @return */ public String getBasicInfo() { return "Name:" + name + ", Sex:" + sex.toString(); } /** * 扩展信息,访问权限 - 私有 * * @return */ private String getExpandInfo() { return "Age:" + age + ", " + "Weight:" + weight + "kg, " + "Alia:" + alia; }}
//某人类
public class Someone extends Person{ private Someone(String name, Sex sex) { this.name = name; this.sex = sex; } private void setFavouriteSports(String favouriteSports) { System.out.print(name + " favourite sports is " + favouriteSports); }}
引用类
public class Reflection{ public static void main(String args[]) throws Exception { //反射的基本使用一, 常用反射写法一 Class cls = Lily.class; Object object = cls.newInstance(); //常量的反射 Field age = cls.getDeclaredField("age"); age.setAccessible(true); Field weight = cls.getDeclaredField("weight"); weight.setAccessible(true); Field alia = cls.getDeclaredField("alia"); alia.setAccessible(true); System.out.println("age == " + age.get(object)); System.out.println("weight == " + weight.get(object)); System.out.println("alia == " + alia.get(object)); //基本信息获取 Lily lily = new Lily(); System.out.println("basicInfo == " + lily.getBasicInfo()); //私有方法的反射 Method method = cls.getDeclaredMethod("getExpandInfo", null); method.setAccessible(true); System.out.println("ExpandInfo == " + method.invoke(object, null)); //反射的基本使用二, 常用反射写法二 Class cs = Class.forName("com.sample.Someone"); Constructor<Someone> constructor = cs.getDeclaredConstructor(String.class, Sex.class); constructor.setAccessible(true); //利用反射,调用私有构造器 Someone someone = constructor.newInstance("Junhui", Sex.Man); Class someClass = someone.getClass(); Method setFav = someClass.getDeclaredMethod("setFavouriteSports", String.class); setFav.setAccessible(true); setFav.invoke(someone, "basketball"); }}
0 0
- Java反射的基础使用
- java反射的基础
- JAVA反射的基础
- JAVA 的反射基础
- Java的反射基础
- (Java基础--反射)理解反射的概念
- java基础之反射(2.class类的使用)
- Java反射基础(二)--Fileds对象的使用
- Java反射基础(三)--Methods对象的使用
- java 反射的基础学习
- java反射的基础常识
- Java基础-----反射的理解
- java基础反射的心得
- java的反射基础笔记
- java反射的使用
- java 反射的使用
- Java 反射的使用
- java反射的使用
- MySQL数据库的安装和配置图解
- 237. Delete Node in a Linked List
- jquery
- TCP建立连接、传输数据、关闭连接的流程
- Oracle笔记(十五) 数据库备份
- Java反射的基础使用
- OpenCV学习笔记(三)—— OpenCV编程起点
- 解决Adb connection Error:远程主机强迫关闭了一个现有的连接
- Oracle笔记(十六) 数据库设计范式
- 1004
- 关于Android调用invalidate()之后不能及时调用ondraw()的解决办法
- 《Java JDK8学习笔记》读书笔记(4)
- 141. Linked List Cycle
- Maven常见错误