1. 程式人生 > >java反射(9)泛型和Class類

java反射(9)泛型和Class類

  1. 在不適用泛型的時候,必須將利用反射得到的物件進行強制轉換才可以對他進行相應的賦值,如下
    package Chapter_6;
    
    import java.util.Date;
    
    public class YeekuObjectFactory {
        public static Object getInstance(String clsName){
            try{
                Class cls = Class.forName(clsName);
                return cls.newInstance();
            }catch (Exception e){
                e.printStackTrace();
                return null;
            }
        }
    
        public static void main(String args[]){
            Date d = (Date) YeekuObjectFactory.getInstance("java.util.Date");
    //        甚至可以出現下面這種操作
    //        JFrame jFrame = (Date) YeekuObjectFactory.getInstance("java.util.Date");
        }
    }
    
  2. 在使用了泛型之後,可以方便地避免強制轉換地操作,如下

    package Chapter_6;
    
    import javax.swing.*;
    import java.util.Date;
    
    public class YeekuObjectFactoy2 {
        public static <T>T getInstance(Class<T> cls){
            try{
                return cls.newInstance();
            }catch (Exception e){
                e.printStackTrace();
                return null;
            }
        }
    
        public static void main(String args[]){
            Date d = YeekuObjectFactoy2.getInstance(Date.class);
            JFrame jFrame = YeekuObjectFactoy2.getInstance(JFrame.class);
        }
    }