黑马程序员——反射笔记
来源:互联网 发布:淘宝特别促销方案 编辑:程序博客网 时间:2024/06/05 18:03
-------android培训、java培训、期待与您交流! ----------
反射
反射:通过对象获取类的信息,所有对象都支持反这一个操作
1、实例化Class类对象
方式一:Date date=new Date();System.out.println(date.getClass());
方式二:利用类.class取得
Class<Date> date=Date.class;
System.out.println(date);
方式三:Class<?> date= Class.forName("java.util.Date");
System.out.println(date);
一般现在都使用第三种方式,这种方式是Spring的实现基础,而第二种是Hibernate的基础
2、利用反射实例化对象
使用newInstance()实例化对象Class<?> date= Class.forName("java.util.Date");
System.out.println(date.newInstance());
3、new 和反射的区别:
在下面这段代码中,子类可以随意增加,工厂类可以不做任何修改,只用修改主方法中的参数就可以了,使用反射后的最大好处是可以解耦合,用new不能实现解耦合,代码不灵活
public class Test {
public static void main(String[] args) {
Fruit fru=Factory.getInstance("Orange");
fru.eat();
}
}
interface Fruit{
public void eat();
}
class Apple implements Fruit{
public void eat(){
System.out.println("吃苹果");
}
}
class Orange implements Fruit{
public void eat(){
System.out.println("吃橘子");
}
}
class Factory{
public static Fruit getInstance(String classname){
Fruit fru=null;
try {
fru=(Fruit) Class.forName(classname).newInstance();
} catch (InstantiationException | IllegalAccessException
| ClassNotFoundException e) {
e.printStackTrace();
}
return fru;
}
}
4、使用反射操作类的结构
类的结构分为:构造方法,普通方法,属性,有了反射,就可以实现获取这些方法和属性【1】调用构造
通过如下两个方法可以取得构造:getConstructor()取得全部构造,getConstructor(Class<?> String )取得指定构造
【2】调用普通方法
Class类有如下两个方法来调用构造方法:getMethods()取得全部方法,getMethod()取得指定方法
在Method类之中存在一个invoke()方法,这个方法指的是调用反射指定的方法
【3】调用属性
类之中的属性用private封装的,也可以用反射操作
取得全部属性:getDeclaredField()
取得指定属性:getDeclaredField(String name)
Field类里面有个方法setAccessible(true)可以取消封装
- 黑马程序员—反射笔记
- 黑马程序员——【学习笔记】反射
- 黑马程序员——反射笔记
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员—反射
- 黑马程序员——高新技术——反射笔记
- 黑马程序员——Java练习笔记——反射
- 黑马程序员——JAVA笔记——反射
- 黑马程序员:Java学习笔记——反射
- 黑马程序员——自学笔记8(反射)
- 黑马程序员——学习笔记14.Java反射机制
- 黑马程序员学习笔记——泛型的反射
- gvim使用问题汇总
- 遗传算法
- Android中的补间动画
- Windows中查看CPU位数
- -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable a
- 黑马程序员——反射笔记
- FCM算法
- 死锁-猩猩过谷
- 基于时间约束的FCM聚类
- 【Android】《第一行代码—Android》第一章总结
- mysql数据库优化总结
- android 图片缓存
- [Python标准库]re——正则表达式[一]
- Apriori关联规则(购物篮模型)