Tôi đã có một đoạn mã được sử dụng để biến các biểu diễn chuỗi được phân phối bởi Class.getCanonicalName()
vào các phiên bản tương ứng của chúng là Class
. Điều này thường có thể được thực hiện bằng cách sử dụng ClassLoader.loadClass("className")
. Tuy nhiên, nó không thành công trên các kiểu nguyên thủy ném một số ClassNotFoundException
. Giải pháp duy nhất tôi đi qua là một cái gì đó như thế này:Sử dụng các kiểu nguyên thủy với ClassLoader
private Class<?> stringToClass(String className) throws ClassNotFoundException {
if("int".equals(className)) {
return int.class;
} else if("short".equals(className)) {
return short.class;
} else if("long".equals(className)) {
return long.class;
} else if("float".equals(className)) {
return float.class;
} else if("double".equals(className)) {
return double.class;
} else if("boolean".equals(className)) {
return boolean.class;
}
return ClassLoader.getSystemClassLoader().loadClass(className);
}
Điều đó có vẻ rất khó chịu với tôi, như vậy là có bất kỳ phương pháp sạch cho điều này?
Nếu bạn đang sử dụng Java 7, bạn có thể thử 'chuyển' trên chuỗi. –
Ouh, thật tuyệt khi biết. Tuy nhiên, vấn đề là tôi không muốn kiểm tra một số loại bằng cách sử dụng String.equals. Đó là phần khó chịu. – aRestless