java-反射机制-简单代码

来源:互联网 发布:迷人的保姆 知乎 编辑:程序博客网 时间:2024/06/13 08:06
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);
}
}
原创粉丝点击