java将String类型转换为泛型类型。 10
Class<?>c=Class.forName(typename);returnc.getClass().cast(value);这样写为嘛不对呢。。请教各位大侠了。。...
Class<?> c=Class.forName(typename);
return c.getClass().cast(value);
这样写为嘛不对呢。。请教各位大侠了。。 展开
return c.getClass().cast(value);
这样写为嘛不对呢。。请教各位大侠了。。 展开
6个回答
展开全部
上面的好多都没看懂楼主的意思……
class xyz{}
public void A<T>(){....}
比如说:string b = "xyz";现在要调用A<xyz>()这个方法,但是我们只知道b这个string等于"xyz",怎么把"xyz"转换成为A方法中的T.
class xyz{}
public void A<T>(){....}
比如说:string b = "xyz";现在要调用A<xyz>()这个方法,但是我们只知道b这个string等于"xyz",怎么把"xyz"转换成为A方法中的T.
追问
恩,对的。。呵呵,就是这个意思。。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样。
可以在集合框架(Collection framework)中看到泛型的动机。例如,Map 类允许您向一个 Map 添加任意类的对象,即使最常见的情况是在给定映射(map)中保存某个特定类型(比如 String)的对象。
因为 Map.get() 被定义为返回 Object,所以一般必须将 Map.get() 的结果强制类型转换为期望的类型,如下面的代码所示:
Map m = new HashMap();
m.put("key", "blarg");
String s = (String) m.get("key");
要让程序通过编译,必须将 get() 的结果强制类型转换为 String,并且希望结果真的是一个 String。但是有可能某人已经在该映射中保存了不是 String 的东西,这样的话,上面的代码将会抛出 ClassCastException。
理想情况下,您可能会得出这样一个观点,即 m 是一个 Map,它将 String 键映射到 String 值。这可以让您消除代码中的强制类型转换,同时获得一个附加的类型检查层,该检查层可以防止有人将错误类型的键或值保存在集合中。这就是泛型所做的工作。
String不可以转换泛型,泛型是一种广义的类型。
可以在集合框架(Collection framework)中看到泛型的动机。例如,Map 类允许您向一个 Map 添加任意类的对象,即使最常见的情况是在给定映射(map)中保存某个特定类型(比如 String)的对象。
因为 Map.get() 被定义为返回 Object,所以一般必须将 Map.get() 的结果强制类型转换为期望的类型,如下面的代码所示:
Map m = new HashMap();
m.put("key", "blarg");
String s = (String) m.get("key");
要让程序通过编译,必须将 get() 的结果强制类型转换为 String,并且希望结果真的是一个 String。但是有可能某人已经在该映射中保存了不是 String 的东西,这样的话,上面的代码将会抛出 ClassCastException。
理想情况下,您可能会得出这样一个观点,即 m 是一个 Map,它将 String 键映射到 String 值。这可以让您消除代码中的强制类型转换,同时获得一个附加的类型检查层,该检查层可以防止有人将错误类型的键或值保存在集合中。这就是泛型所做的工作。
String不可以转换泛型,泛型是一种广义的类型。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我也不知道 在此留下记号
其实单单执行 Class<?> c = Class.forName("String");
就会出找不到 String的异常 如果 typename换成 任意一个自定义的类型 就不存在这个问题
其实单单执行 Class<?> c = Class.forName("String");
就会出找不到 String的异常 如果 typename换成 任意一个自定义的类型 就不存在这个问题
追问
额。。你当然要写成“java.lang.String”了,不然怎么能找到。不过最后还是用if else把类型给遍历了。也就无所谓参数了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你这么写等于是猜哑谜,人家是说你给他一个字符串他给你找一个类出来,你这么写等于是,故意装着不知道,让人家告诉你。
Class.forName就是你告诉我一个人的某一特征,我把你把这个人找出来,但是他肯定不知道这个人的名字,你倒好人家把人给你找来了,你问人家这个人是谁。你传一个字符串过去,你肯定知道这个类是谁。
Class.forName就是你告诉我一个人的某一特征,我把你把这个人找出来,但是他肯定不知道这个人的名字,你倒好人家把人给你找来了,你问人家这个人是谁。你传一个字符串过去,你肯定知道这个类是谁。
追问
神那。。太绕了。。我是想把value这个字符串转换为名字为typename的类型。这里typename是个参数,不确定,不是故意不知道,是真的不知道。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询