创建对象(反射)

来源:互联网 发布:java tcp协议开发 编辑:程序博客网 时间:2024/05/23 16:21
package com.jalja.reflect;


import java.util.Date;




public class CreateInstance {
    public static void main(String[] args) {
System.out.println(createInstance3("java.util.Date",Date.class));
}
    //创建对象
    public static Object createInstance1(String className){
    Class clazz;
try {
clazz = Class.forName(className);
Object obj=clazz.newInstance();
return obj;
} catch (Exception e) {
e.printStackTrace();
}
    return null;
    }
    //创建对象(解决类型强转问题)
    public static <T>T createInstance2(Class<T> clazz){
try {
return clazz.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
    return null;
    }
    
    //创建对象(解决类型强转问题)
    public static <T>T createInstance3(String className,Class<T> clazz){
try {
Class<T> cla=(Class<T>) Class.forName(className);
Object obj=cla.newInstance();
//检查对象与类型是否兼容
if(clazz.isInstance(obj)){
return (T) obj;
}
throw new IllegalAccessException("对象和类型不兼容");
} catch (Exception e) {
e.printStackTrace();
}
    return null;
    }
}
0 0
原创粉丝点击