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方法。 展开
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方法。 展开
4个回答
展开全部
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方法。
{
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方法。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
new Test1().do1((List<String>) ((List) (A.method())));
改成这样就可以了,具体原因我也不太清楚。
改成这样就可以了,具体原因我也不太清楚。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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 ());
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
报错就对了,你的A.method()就是一个对象object,不是一个string
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询