反射机制(实例化Class)对象
反,就是利用对象找到对象的出处
Object类中有一个方法,getClass()
Date date = new Date();
System.out.println(date.getClass());
结果:
class java.util.Date
Class类对象实例化
Class 是一个类,这个类是反射操作的源头。所有的反射都要从此类开始进行。
这个类有三个实例化方式。
1.调用 Object类中的getClass()方法
Date date = new Date();
Class <?> cl = date.getClass();
System.out.println(cl);
2.类.class;
Date date = new Date();
Class <?> cl =Date.class;
System.out.println(cl);
3.(重点)调用class类提供的方法:
实例化Class对象
public static Class<?> forName(String className)throws ClassNotFoundException
接受String
package cn; public class Test { public static void main(String[] args) throws Exception{
Class <?> cls = Class.forName("java.util.Date") ;
System.out.println(cls); } }
此时可以不用 import 语句导入一个明确的类。
************************************************************
现在利用反射实例化对象操作
aaarticlea/png;base64,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" alt="" />
package cn;
class Book {
public Book() {
System.out.println("********************");
} }
public class Test { public static void main(String[] args) throws Exception{
Class <?> cl = Class.forName("cn.Book") ;
Object obj = cl.newInstance() ;
Book book = (Book) obj ;
} }
有了反射之后,不再需要new完成了
反射也可以完成,但是这个并没有表示new被完全取代了。
new是造成耦合的最大元凶。
举个栗子:
工厂设计模式:
package cn;
interface Fruit{
public void eat() ;
}
class Apple implements Fruit{
public void eat() {
System.out.println("吃苹果") ;
}
}
class Factory{
public static Fruit getInstance(String className){
if("apple".equals(className)){
return new Apple() ;
}
return null ;
}
}
public class Test { public static void main(String[] args) throws Exception{
Fruit f = Factory.getInstance("apple") ;
f.eat() ;
} }
如果现在要加一个橘子类,那么就要修改工厂的函数。
但是现在使用反射机制就可以避免修改这个类
package cn;
interface Fruit{
public void eat() ;
}
class Apple implements Fruit{
public void eat() {
System.out.println("吃苹果") ;
}
}
class Factory{
public static Fruit getInstance(String className){
Fruit f = null ;
try{
f= (Fruit) Class.forName(className) .newInstance(); } catch (Exception e){} return f ;
}
}
public class Test { public static void main(String[] args) throws Exception{
Fruit f = Factory.getInstance("cn.Apple") ;
f.eat() ;
} }
反射机制(实例化Class)对象的更多相关文章
- Java反射机制(创建Class对象的三种方式)
1:SUN提供的反射机制的类: java.lang.Class<T> java.lang.reflect.Constructor<T> java.lang.reflect.Fi ...
- 通过java反射机制,获取对象的属性和值(包括所有继承的父类)
java的反射机制提供了两种方法: getDeclaredFields() :该方法能获取到本类的所有属性,包括private,protected和public,但不能获取到继承的父类的属性. get ...
- Java反射机制(获取Class对象的三种方式+获取Class中的构造函数进行对象的初始化+获取反射类的字段+获取反射类的一般方法)
反射技术其实就是动态加载一个指定的类,并获取该类中的所有内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员,简单来说:反射技术可以对一个类进行解剖,反射大大增强 ...
- 一篇文章看懂java反射机制(反射实例化对象-反射获得构造方法,获得普通方法,获得字段属性)
Class<?> cls = Class.forName("cn.mldn.demo.Person"); // 取得Class对象传入一个包名+类名的字符串就可以得到C ...
- Class对象、反射机制、获取Constructor构造方法
1.Class对象的三种创建方法(Class首字母大写) public class Demo { public static void main(String[] args){ Object obj= ...
- java 反射机制
1.反射机制是什么: (1)反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能 ...
- java.lang.Class<T> -- 反射机制
1反射机制是什么 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性:这种动态获取的信息以及动态调用对象的方法的功能称为jav ...
- 【转】JAVA中的反射机制
反射,当时经常听他们说,自己也看过一些资料,也可能在设计模式中使用过,但是感觉对它没有一个较深入的了解,这次重新学习了一下,感觉还行吧! 一,先看一下反射的概念: 主要是指程序可以访问,检测和修改它本 ...
- java中的反射机制_____
一,先看一下反射的概念: 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义. 反射是java中一种强大的工具,能够使 ...
- java反射机制(1)
反射,当时经常听他们说,自己也看过一些资料,也可能在设计模式中使用过,但是感觉对它没有一个较深入的了解,这次重新学习了一下,感觉还行吧! 一,先看一下反射的概念: 主要是指程序可以访问,检测和修改它本 ...
随机推荐
- aspx基础开始
<%@ Page Language="C#" Debug="true" trace="false" validateRequest=& ...
- If only it could be all the same like we first me
为什么 你当时对我好 Why? You nice to me at that time. 又为什么 现在变得冷淡了 Why? Now you give a cold shoulder to me. 我 ...
- javascript 中 apply(或call)方法的用途----对象的继承
一直以来,我的理解就是 js中的Function.apply(或者是Function.call)方法是来改变Function 这个函数的执行上下文(excute Context),说白了,就是改变执 ...
- HDFS读写程序小测试
WriteHdfs: package aa; import java.io.*; import org.apache.hadoop.conf.Configuration; import org.apa ...
- 处理Easyui的Datagrid无法及时刷新问题
在Easyui中打打开窗口dialog控件,当做完修改操作之后,关闭dialog控件刷新Datagrid,有时候无法及时刷新. 1.JavaScript中的代码 function doEdit(){ ...
- Oracle获取系统时间及格式化
Oracle 获取当前日期及日期格式 获取系统日期: SYSDATE() 格式化日期: TO_CHAR(SYSDATE(),'YY/MM/DD HH24:MI:SS) ...
- poj 1837 Balance 动态规划 (经典好题,很锻炼思维)
题目大意:给你一个天平,并给出m个刻度,n个砝码,刻度的绝对值代表距离平衡点的位置,并给出每个砝码的重量.达到平衡状态的方法有几种. 题目思路:首先我们先要明确dp数组的作用,dp[i][j]中,i为 ...
- 硬盘安装Win7、CentOS7双系统
待补充 0.软件 Acronis Disk Director:用来对硬盘分区,将磁盘的一部分格式化成Linux可以识别的ext3格式 Ext2Fsd:因为Windows不能识别ext3格式的文件系统, ...
- 【Android Demo】通过WebService获取今日天气情况--转
因为本身是在搞.NET方面的东东,现在在学习Android,所以想实现Android通过WebService接口来获取数据,网上很多例子还有有问题的.参考:Android 通过WebService进行 ...
- 初始化Direct3D
1.Direct3D概述 Direct3D是一套底层图形API,借助该API,我们能够利用硬件加速功能来绘制3D场景. 设备制造商将其产品支持的全部功能都实现到HAL中. 1.1 Direct3D提供 ...