我寫這將通過它嘗試了class.cast驗證屬性的通用方法,但我不斷收到一個ClassCastExceptionClassCastException異常使用Class.cast使用泛型
...類來測試
public <T> T get(Properties p, String propKey, Class<T> clazz) throws Exception {
T val = null;
Object propValue = p.get(propKey);
if(propValue== null) {
throw new Exception("Property (" + propKey + ") is null");
}
try {
val = clazz.cast(propValue); // MARKER
} catch(Exception e) {
throw new Exception("Property (" + propKey + ") value is invalid value of type (" + clazz + ")", e);
}
return val;
}
...測試類
@Before
public void setUp() {
propUtil = new PropUtil();
properties = new Properties();
properties.setProperty("test.int.prop", "3");
}
@Test
public void testGet() {
try {
assertEquals(new Integer(3), propUtil.get(properties, "test.int.prop", Integer.class));
} catch (Exception e) {
System.out.println(e);
}
}
在MARKER在註釋中的代碼導致ClassCastException異常。
任何想法非常讚賞。
不錯的解決方法,如果沒有該簽名的構造函數,[NoSuchMethodException](http://docs.oracle.com/javase/6/docs/api/java/lang/NoSuchMethodException.html)被拋出女巫似乎在你的代碼中處理。 – A4L 2013-03-26 20:58:42