java小结_018_反射Constructof_Method_field
来源:互联网 发布:linux系统备份与还原 编辑:程序博客网 时间:2024/04/27 16:10
反射机制的优点与缺点:
为什么要用反射机制?直接创建对象不就可以了吗,这就涉及到了动态与静态的概念,
静态编译:在编译时确定类型,绑定对象,即通过。
动态编译:运行时确定类型,绑定对象。动态编译最大限度发挥了java的灵活性,体现了多态的应用,有以降低类之间的藕合性。
一句话,反射机制的优点就是可以实现动态创建对象和编译,体现出很大的灵活性。
Class中得到构造方法Constructor、
常用方法:
Constructor类用于描述类中的构造方法:
Constructor<T>getConstructor(Class<?>... parameterTypes)
返回该Class对象表示类的指定的public构造方法;
Constructor<?>[] getConstructors()
返回该Class对象表示类的所有public构造方法;
Constructor<T>getDeclaredConstructor(Class<?>... parameterTypes)
返回该Class对象表示类的指定的构造方法,和访问权限无关;
Constructor<?>[]getDeclaredConstructors()
返回该Class对象表示类的所有构造方法,和访问权限无关;
<span style="font-size:18px;">import java.lang.*; class Emp{ private String name; private int age; private Emp() { } Emp(String name){ } public Emp(String name,int age){ }} public class ConstructorDemo4 { public static void main(String[] args) throws Exception { //得到所有的构造器(先得到类) Class<Emp> c = Emp.class; /** *Constructor<?>[] getConstructors() 返回一个包含某些Constructor 对象的数组,这些对象反映此 Class 对象所表示的类的所有公共构造方法。 */ Constructor[] con = c.getConstructors();//前面的修饰符必须是public才可以在这个方法下获取到 for (Constructor cons :con) { System.out.println("c.getConstructors()"+cons);//如果上面的某构造器public去掉,则显示不出 } //得到指定的构造器,也是必须public Constructor c1 = c.getConstructor(String.class,int.class); System.out.println(c1); System.out.println("===================================="); //现在想获得不受public影响的,getDeclaredConstructors(),暴力反射 con = c.getDeclaredConstructors(); for (Constructor cons :con) { System.out.println("c.getDeclaredConstructors()=="+cons);//此时不受修饰符的影响 } }} </span>
方法Method、字段Field
Method类用于描述类中的方法:
Method getMethod(String name,Class<?> ... parameterTypes)
返回该Class对象表示类和其父类的指定的public方法;
Method[] getMethods():
返回该Class对象表示类和其父类的所有public方法;
Method getDeclaredMethod(String name,Class<?>... parameterTypes)
返回该Class对象表示类的指定的方法。和访问权限无关,但不包括继承的方法;
Method[] getDeclaredMethods(): 获得类所有的方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法;
<span style="font-size:18px;">import java.lang.*; class AB{ protected String name; protected String id;}@Deprecatedpublic class MethodDemo5extends AB{ void show(){} public void say(){} private int age; public char c; private boolean b; public static void main(String[] args) throws Exception { Class<MethodDemo5> c = MethodDemo5.class; //获取所有的(包含父类的方法)public修饰的方法 Method[] m = c.getMethods(); for (Method method : m) { System.out.println(method); } //获取指定的方法 Method me = c.getMethod("main", String[].class); System.out.println("main "+me); //访问所有方法,不受访问权限影响 m = c.getDeclaredMethods(); for (Method method : m) { System.out.println("不受访问权限影响:"+method); } me = c.getDeclaredMethod("show"); System.out.println(me); me = c.getMethod("toString"); System.out.println(me); /** * Method[]getDeclaredMethods() 返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法, 包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法,只可以对当前类有效 */ //得到字段 Field[] f = c.getFields(); for (Field field : f) {//只得到了public的 System.out.println("字段"+field); } //特定字段 Field fi = c.getField("c");//""里面是名称 System.out.println(fi); //得到不受限定名限定的全部字段 f = c.getDeclaredFields(); for (Field field : f) {//得到不受修饰符限定的字段,但是只对当前类有效 System.out.println("全部:"+field); } }}</span>
- java小结_018_反射Constructof_Method_field
- JAVA反射小结
- java反射机制小结
- Java反射小结
- Java反射机制小结
- Java反射-精简小结
- Java反射小结
- Java反射机制小结
- java反射机制小结
- java 使用反射小结
- Java 反射机制小结
- java 反射机制小结
- java中反射的小结
- Java中Reflect反射小结
- 黑马程序员---Java基础加强反射小结
- java关于反射的粗略小结
- java小结_019_反射创建对象
- Java中反射与正则小结
- 王祖贤素颜现身疑整形 明星整容前后对比照惨不忍睹
- 世界最长油条现身武汉 达3.72米 (图)
- 21世纪报系总编和总经理被带走
- 哈尔滨妇女权益条例新规:赚钱不给老婆花也算家暴(图)
- 中华藏獒王"嘉玛"首例纯种藏獒克隆项目成功
- java小结_018_反射Constructof_Method_field
- 柯震东经纪人柴智屏被大陆限制出境 疑涉刑事犯罪
- 东莞"女德班"被责令停办 学员被遣散并退回学费
- java小结_019_反射创建对象
- 中国最小黑客:为不做作业 黑掉学校系统
- 李亚鹏离婚前写给王菲的信疯传 内容矛盾
- 孙红雷携女友珠宝店挑大钻戒 获VIP专属服务
- java小结_020_注解
- 最美学生会主席完爆北大小师妹 艺术生面孔学霸心K掉古装秀