程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 調用帶參類的帶參方法- 如何把字符串轉換成用字符串顯示的字符類型 求幫助!

調用帶參類的帶參方法- 如何把字符串轉換成用字符串顯示的字符類型 求幫助!

編輯:編程綜合問答
如何把字符串轉換成用字符串顯示的字符類型 求幫助!
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);
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved