private String[] colName = null; // 列名數組
private String[] colType = null; //存放數據類型
private String[] colValue = null; // 列植
這裡有三個數組是從數據庫中讀取這些數據 然後將這些數據轉換成一個對象
老師留的仿hibernate的根據主鍵獲取對象的方法 我知道要用類反射做 可是怎麼用就不太明白了 我寫了這麼個代碼
Class c = Class.forName("java.lang.Double");
Object o = c.newInstance();
Object result = c.getDeclaredMethod("parse", String.class).invoke(Test.class, "4455");
System.out.println(result);
是通過反射獲取Double的類 再調用parse方法 傳的參數是4455 可是執行時報這個錯誤
java.lang.InstantiationException: java.lang.Double
我網上查了說Double這個類構造的時候需要一個參數 而newInstance(); 沒有辦法穿參數 然後有了下面代碼
Class c = Class.forName("java.lang.Double");
Constructor cons = c.getConstructor(new Class[]{String.class});
Object o = cons.newInstance("parse");
這個樣子雖然類可以傳參數了 可是就沒有辦法調方法了 Constructor沒有getMethod方法。。
感謝你看了這麼多 有解決辦法的話發一個呗 萬分感謝!
Double沒有無參數的構造函數,因此你newInstance()是會報InstantiationException錯誤的,下面是該錯誤的解釋:
InstantiationException - if this Class represents an abstract class, an interface, an array class, a primitive type, or void; or if the class has no nullary constructor; or if the instantiation fails for some other reason.
其次,Double沒有parse方法,有parseDouble方法,因此你的程序要改成下面的:
Class c = Class.forName("java.lang.Double");
Object result = c.getDeclaredMethod("parseDouble", String.class).invoke(
Test.class, "4455");
System.out.println(result);