java 泛型方法报错!

publicclassTest{publicvoiddo1(List<String>strs){System.out.println(strs);}publicstati... public class Test {
public void do1(List<String> strs){
System.out.println(strs);
}
public static void main(String[] args) {
new Test().do1(A.method());//报错,说List<Object>不能转为List<String>
}
}
class A{
public static <T> List<T> method(){
return null;
}
}
请大神帮忙改改,如何使编译通过。要求是不使用List<String> lstr = A.method();
忘了说要求了,Class A 和 do1方法都是第三方jar包提供的,无法更改。唯一能改的只有main方法。
展开
 我来答
枭洒汼
2014-03-19 · 超过20用户采纳过TA的回答
知道答主
回答量:40
采纳率:100%
帮助的人:39万
展开全部
public class TestFanx
{
public void print(List<String> strs)
{
System.out.println(strs);
}

public static void main(String[] args)
{
new TestFanx().print(new A<String>().method());
}
}

class A<T>
{
public List<T> method()
{
return null;
}
}

这样就可以了。如果只能修改main方法 那你只能先调用A类的方法得到List数据,然后遍历List进行强转成String类型,再调用Test类的do1方法。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小溪春深处_
2014-03-19 · 超过17用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:38.5万
展开全部
new Test1().do1((List<String>) ((List) (A.method())));
改成这样就可以了,具体原因我也不太清楚。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yugi111
2014-03-19 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
public void do1 ( List<Object> strs )
{
    System.out.println (strs);
}



public void do1 ( List strs )
{
    System.out.println (strs);
}
追问
我这里do1和class A都是第三方jar包写好的,能改的只有main方法。我想要的效果是A.method()在被调用的时候如何使编译器自动识别为String的泛型,比如在某个地方加个的标记。不知道有没有这样的方法
追答
import java.util.List;

public class Test
{
public void do1 ( List<String> strs )
{
System.out.println (strs);
}

@SuppressWarnings ( "unchecked" )
public static void main ( String[] args )
{
new Test ().do1 ((List<String>) A.method()); 
}
}

class A
{
public static List<?> method ()
{
return null;
}
}








=================================

public static void main ( String[] args )
{
new Test ().do1 ((List)A.method ()); 
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a393060727
2014-03-19 · TA获得超过102个赞
知道答主
回答量:134
采纳率:0%
帮助的人:38.6万
展开全部
报错就对了,你的A.method()就是一个对象object,不是一个string
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式