java-反射机制-简单代码
2017-10-04 16:19
387 查看
package cn.ml.reflect;
import java.text.SimpleDateFormat;
import java.util.Date;
class Number{
public Number() {
System.out.println("*******************");
}
@Override
public String toString() {
return "是一个人。。。。。。。";
}
}
public class ReflectText01 {
public static void main(String[] args) throws Exception {
// getInstantiantion01();//实例化对象第一种方式
// getInstantiantion02();//实例化对象第二种方式
// getInstantiantion03();//实例化对象第三种方式
// getInstantDate();//实例化 date对象
getCustom();//自定义对象实例化
}
// ==========================================================
/**
* 最简单的反射处理,更具实例化对象找到对应的类
*/
public static void getNames() {
Date data = new Date();//
实例化对象
System.out.println(data.getClass());//class java.util.Date
// 取的类名称
System.out.println(data.getClass().getName());//java.utie.Date
// 取的完整的名称
System.out.println(data.getClass().getSimpleName());//Date
}
// ============================================================
/**
* class 实例化对象的方式一 : Object 类中的getClass()方法
*/
public static void getInstantiantion01() {
Date data = new Date();//正常操作类,得到实例化对象
Class<? extends Date> cls = data.getClass();//得到所有的对象
System.out.println(cls);//调用toString()方法
}
// ==============================================================
/**
* class 实例化对象的方式二 : 采用类名.class
*/
public static void getInstantiantion02() {
/*Date data = new Date();//正常操作类,得到实例化对象
data.getClass().getName();//获得类名称
*/
Class<Date> cls = java.util.Date.class;//所有的类都有
System.out.println(cls);
}
// =====================================================
/**
* Class 类内部提供有一个static方法,可以获取指定类的Class对象
* 方法: public static Class<?>forName(String className)throw ClassNotFoundException
* @throws Exception
*/
public static void getInstantiantion03() throws Exception {
Class<?> cls = Class.forName("java.util.Date");
System.out.println(cls);
Object cn = cls.newInstance();//实例化对象
System.out.println(cn);
}
// ===================================================================
/**
* 反射实例化Date 对象
* @throws Exception 反射类名实例化抛出的异常
*/
public static void getInstantDate() throws Exception {
Class<?> cfl = Class.forName("java.util.Date");//根据对象反射类
Date cfi = (Date)cfl.newInstance();//进行实例化对象
System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(cfi));
}
// ==========================================================================
/**
* 自定义对象实例化------- 暂时使用无参构造函数
* @throws Exception
*/
public static void getCustom() throws Exception {
Class<?> clf = Class.forName("cn.ml.reflect.Number");
Number cln = (Number) clf.newInstance();//对象实例化
cln.toString();
System.out.println(cln);
}
}
import java.text.SimpleDateFormat;
import java.util.Date;
class Number{
public Number() {
System.out.println("*******************");
}
@Override
public String toString() {
return "是一个人。。。。。。。";
}
}
public class ReflectText01 {
public static void main(String[] args) throws Exception {
// getInstantiantion01();//实例化对象第一种方式
// getInstantiantion02();//实例化对象第二种方式
// getInstantiantion03();//实例化对象第三种方式
// getInstantDate();//实例化 date对象
getCustom();//自定义对象实例化
}
// ==========================================================
/**
* 最简单的反射处理,更具实例化对象找到对应的类
*/
public static void getNames() {
Date data = new Date();//
实例化对象
System.out.println(data.getClass());//class java.util.Date
// 取的类名称
System.out.println(data.getClass().getName());//java.utie.Date
// 取的完整的名称
System.out.println(data.getClass().getSimpleName());//Date
}
// ============================================================
/**
* class 实例化对象的方式一 : Object 类中的getClass()方法
*/
public static void getInstantiantion01() {
Date data = new Date();//正常操作类,得到实例化对象
Class<? extends Date> cls = data.getClass();//得到所有的对象
System.out.println(cls);//调用toString()方法
}
// ==============================================================
/**
* class 实例化对象的方式二 : 采用类名.class
*/
public static void getInstantiantion02() {
/*Date data = new Date();//正常操作类,得到实例化对象
data.getClass().getName();//获得类名称
*/
Class<Date> cls = java.util.Date.class;//所有的类都有
System.out.println(cls);
}
// =====================================================
/**
* Class 类内部提供有一个static方法,可以获取指定类的Class对象
* 方法: public static Class<?>forName(String className)throw ClassNotFoundException
* @throws Exception
*/
public static void getInstantiantion03() throws Exception {
Class<?> cls = Class.forName("java.util.Date");
System.out.println(cls);
Object cn = cls.newInstance();//实例化对象
System.out.println(cn);
}
// ===================================================================
/**
* 反射实例化Date 对象
* @throws Exception 反射类名实例化抛出的异常
*/
public static void getInstantDate() throws Exception {
Class<?> cfl = Class.forName("java.util.Date");//根据对象反射类
Date cfi = (Date)cfl.newInstance();//进行实例化对象
System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(cfi));
}
// ==========================================================================
/**
* 自定义对象实例化------- 暂时使用无参构造函数
* @throws Exception
*/
public static void getCustom() throws Exception {
Class<?> clf = Class.forName("cn.ml.reflect.Number");
Number cln = (Number) clf.newInstance();//对象实例化
cln.toString();
System.out.println(cln);
}
}
相关文章推荐
- java的反射机制(简单解释)
- JAVA中的反射机制(内涵非常多代码实例)
- JAVA:将反射技术应用于工厂模式(Factory)和单例模式(Singleton)的简单代码
- 简单总结Java的反射机制的运用
- 简单的java 反射机制实践 map 与object对象的转换
- 使用 Cobertura 和反射机制提高 Java 单元测试中的代码覆盖率
- 【初学java】反射的性能损耗 -- 简单加法,反射版本执行时间是普通代码版本的20倍!
- JAVA的回调函数和反射机制(原理不说直接看代码),补充动静态代理
- java的反射机制的理解和代码的分析
- java-反射机制的原理与简单使用
- Java的RTTI和反射机制代码分析
- 采用Java的反射机制编写的克隆类以及方法的代码
- java 类加载机制和反射详解及实例代码
- java反射最简单最本质的一段代码
- 利用Java的反射机制,写了一个简单的仿Gson的解析器
- java中的反射机制基础概念及其代码演示
- Java 反射机制 的超简单实例分析
- java 反射机制详解及实例代码
- Java 反射机制简单总结
- Java基础系列:(3)反射机制的简单总结