[J2SE]s02e06.反射(课后练习)
来源:互联网 发布:sql 删除行数据 编辑:程序博客网 时间:2024/05/27 12:20
案例:动态创建对象,调用对象的方法
通过反射还可以做到
a.获得这个类实现了那些接口
getInterfaces
b.得到其父类
getSuperclass
c.得到所有的构造函数
getConstructors
c=Person.class;
Person a=newPerson();
c=a.getClass();
关于反射更详细可参考
http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html
Person类
<span style="font-size:18px;">package javastudy;public class Person implements Animal {String name;int age;void display(){String s=String.format("姓名=%s,年龄=%d", name,age);System.out.println(s);}public Person(){}public Person(String name,int age)//反射机制下需加public,否则调用时会提示数组数组索引超出边界{this.name=name;this.age=age;}}</span>
test
<span style="font-size:18px;">package javastudy;import java.lang.reflect.Constructor;import java.lang.reflect.InvocationTargetException;public class test {public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {// TODO Auto-generated method stubClass<?>c=Class.forName("javastudy.Person");//Class.forName("") 动态加载类,将Person加载到内存中//Class<?> 泛型(了解) 通配符Person zhang=(Person)c.newInstance();//创建的新对象newInstance返回值为 Object类型,需要强制转换为Personzhang.name="Jack";zhang.age=20;zhang.display();Constructor<?>[] cons=c.getConstructors(); //cons 存所有构造函数Person wang=(Person)cons[1].newInstance("Mary",30);wang.display();Class<?>[] inter=c.getInterfaces();for(int i=0;i<inter.length;i++){System.out.println(inter[i].getName());}}}</span>运行结果:
姓名=Jack,年龄=20
姓名=Mary,年龄=30
javastudy.Animal
创建Animal接口,通过反射查找接口,运行:
0 0
- [J2SE]s02e06.反射(课后练习)
- [J2SE]s02e05.抛出错误(课后练习)
- [J2SE]s02e03.两个错误处理的例子(课后练习)
- [J2SE]s02e07.集合框架概述(课后练习)
- [J2SE]s02e02.枚举和类的静态成员(课后练习)
- [J2SE]s02e09.List的实现类ArrayList等(课后练习)
- [J2SE]s02e10.Set的实现类HashSet与TreeSet(课后练习)
- J2SE(十二)Java之反射
- 课后练习
- 课后练习
- 课后练习
- 课后练习
- J2SE之反射
- class对象 java中的反射(J2SE入门20)
- Applet课后练习-2
- C#课后练习
- 毛邓三 课后练习答案
- APUE课后练习3.2
- url 参数传递中文乱码问题 即<a href> 利用 js 的 encodeURI解决中文乱码问题
- Swift设计模式之原型模式
- Appium移动自动化环境搭建
- Java中的NIO和IO的对比分析
- 思迅账套数据库软件修复,思迅软件数据库置疑
- [J2SE]s02e06.反射(课后练习)
- Swift设计模式之外观模式
- 计算机图形学(二)输出图元_10_多边形填充区_2_分割凹多边形
- ANSI、GBK、GB2312、UTF-8、GB18030和、UNICODE编码解读
- 增强学习Reinforcement Learning经典算法梳理3:TD方法
- Android Https相关完全解析 当OkHttp遇到Https
- Swift设计模式之适配器模式
- 1.Linux基础权限
- 权限管理-数据权限