java 反射技术
来源:互联网 发布:启动tomcat数据库被锁 编辑:程序博客网 时间:2024/05/16 09:01
package cn.yws.reflect;import java.lang.reflect.Field;import java.lang.reflect.Method;/** * java反射技术 * @author Administrator * */public class Test {public static void main(String[] args) throws Exception {GetInfo(Student.class,true);//new LoadedClass();Class cls = Class.forName("cn.yws.reflect.LoadedClass"); System.out.println("当前类是数组:" + cls.isArray()); System.out.println("当前类是枚举:" + cls.isEnum()); System.out.println("当前类是接口:" + cls.isInterface()); System.out.println("当前类是接口:" + cls.isMemberClass()); //cn.yws.reflect.LoadedClass cn.yws.reflect.Test$Student Class<?> cls2 = Class.forName("cn.yws.reflect.LoadedClass"); //cls2.getConstructor(new Class[]{}).newInstance(new Object[]{}); //Class cls2=Teacher.class; Object obj = cls2.newInstance(); Class[] para = null; Method m = cls2.getMethod("say", para); Object [] arg = null; m.setAccessible(true); m.invoke(obj, arg); Class<?> cls_teacher =Outerteacher.class; Object obj_teacher = cls_teacher.newInstance(); Field fd1 = cls_teacher.getField("name"); fd1.set(obj_teacher, "Tom"); Field fd2 = cls_teacher.getField("age"); fd2.setInt(obj_teacher, 23); Class[] para_teacher = null; Method m_teacher = cls_teacher.getMethod("say", para_teacher); Object [] arg_teacher = null; m_teacher.invoke(obj_teacher, arg_teacher); }private static void GetInfo(Class cls,Boolean isALL) {System.out.println("类名:" + cls.getName());System.out.println();System.out.println("数据成员信息:");Field[] fd = cls.getDeclaredFields();if(isALL){fd=cls.getFields();}for (int i = 0; i < fd.length; i++) {System.out.println(fd[i]);}System.out.println(); System.out.println("方法成员信息:"); Method[] mt = cls.getDeclaredMethods(); if(isALL) { mt=cls.getMethods(); } for(int j = 0; j < mt.length; j++) { System.out.print(mt[j].getReturnType().getName()); System.out.print(" "); System.out.print(mt[j].getName()); System.out.print("("); Class[] paraCls = mt[j].getParameterTypes(); for(int k = 0; k < paraCls.length; k++) { if(k > 0) { System.out.print(", "); } System.out.print(paraCls[k].getName()); } System.out.println(")"); }} abstract class People {private int id;private String sex;public People(){}public abstract String sayHello(String name);public String marry(String name){return id+" marry to "+name;}}interface MyInterface{ void say();}class Teacher {public String name;public int age; public void say() {System.out.println("Hello, I'm Teacher!" +name+age);}}class Student extends People implements MyInterface{public String myName;public int age;public Student(){}public Student(String myName, int age) {super();this.myName = myName;this.age = age;}public String introduce() {String ret = "My name is " + myName + ", my age is " + age;return ret;}@Overridepublic String sayHello(String name) {String ret = "Hello, " + name + ", My name is" + myName;return ret;}@Overridepublic void say() {System.out.println("Hello, I'm Student!");}}}
package cn.yws.reflect;public class LoadedClass{ static { System.out.println("类LoadedClass载入");//静态代码,只有类加载入内存时才被执行 } public LoadedClass() { System.out.println("类LoadedClass实例化");//构造器,每次产生实例时都将被调用 } public void say() { System.out.println("say hehe"); }}
package cn.yws.reflect;public class Outerteacher {public String name;public int age; public void say() {System.out.println("Hello, I'm Teacher!" +name+age);}}
0 0
- java反射技术
- java反射技术(2)
- Java的反射技术
- Java中反射技术
- 反射技术Java原理
- java反射技术
- java的反射技术
- java反射技术
- Java反射技术
- java反射技术
- java反射技术
- java反射代理技术
- java中的反射技术
- java 的反射技术
- java反射技术详解
- java 反射技术
- JAVA反射技术介绍
- java反射技术学习
- android 多个cursor 的读取 和读取某个Cursor其他从集合中获取的速度比较
- xxxx
- 如何让浏览器上的后退按钮无效
- jQuery动态添加、删除元素
- C# StringBuilder用法
- java 反射技术
- 偏最小二乘回归(Partial Least Squares Regression)笔记
- ios开发:NSKeyedUnarchiver,数据序列化,本地存储
- Java多线程(二)、线程的生命周期和状态控制
- 纯属练手
- 备忘WinDbg 常用命令集锦
- javaBean的内省操作
- phpmyadmin上传文件大小限制的配置方法
- Android文件上传,关键代码