用JAVA实现强制类型转换

帮我写一个函数, 函数名为
public static Object castClas(Object obj, String className)
意思是将 obj强制类型转换为className对应的类, 并返回强制类型转换后的obj, className是obj.getClass().getName()得到的它本身对应的类名
我有一个地方需要用到这个函数, 但不知道如何实现, 谢谢.

第1个回答  2012-08-15
你classname不是已经给了 String类型了么?
那你说将obj转classname对应类是什么意思?
(String)还是。ToString?追问

className是之前已经获得, 并存放在一个地方, 现在就是需要将object动态强制转换为 className对应的类, 我有一个地方需要用到, className既有可能是getClass().getName()获得, 也有可能是它的一个父类, 总之就是一个动态进行类型强制转换的问题
应该是用到类反射的机制, 但不知道如何实现.

追答

不知道classname的类型用强转貌似。。。
才疏学浅。不好意思~

追问

举例
String s1 = "ABC"
Object obj = s1;
String s2 = castClass(obj, "java.lang.String");
现在应该很清楚我的意思了吧

追答

太高端了~ 帮不了你 装箱我倒是明白 但是在不知道类型的话强转拆箱 还是有困难。

追问

确实有难度, 困扰我很长时间了, google, baidu都没有找到答案

第2个回答  2012-08-15
你试试行不行

public static void main(String[] args) {
List data = new ArrayList();
data.add("a");
try {
castClas(data, "java.util.List");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Object castClas(Object obj, String className) throws ClassNotFoundException {
Class c = Class.forName(className);

List data = (List) c.cast(obj);

System.out.println(data);
return obj;
}追问

sorry, 不行, 测试不通过
String s1 = "ABC";
Object obj = s1;
Class c = Class.forName("java.lang.String");
String s2 = c.cast(obj);
System.out.println(s2);

追答

这是可以的啊
String s1 = "ABC";
Object obj = s1;
Class c = Class.forName("java.lang.String");
String s2 = (String) c.cast(obj);
System.out.println(s2);

结果:ABC

追问

String s2 = (String) c.cast(obj); 这句话本身没有问题
但是我在使用时, 并不知道obj是String类型的, 所以只能用到
castClas(Object obj, String className) 这个函数了, 如果用你这种办法, 只能像下面这样写了
if ("java.lang.String".equals(className))
Object obj = (String)c.cast(obj);
else if ("java.lang.Float".equals(className))
obj = (Float).cast(obj);
我开始就是这样写的,

追答

哦,我知道你的意思了,我也遇到类似的情况,也是像你这样实现的,很多个反之

本回答被网友采纳
第3个回答  2012-08-15
这种要求太变态了吧
同求高手出现

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网