A. java泛型方法的问题
你这是Java泛型的一种错误用法,叫做“类型隐藏”,不过编译是可以通过的。
你想要的效果其实应该这么写:
classA
{
public<T>voidshow(Strings)
{
System.out.println(s);
}
publicstaticvoidmain(String[]args)
{
Aa=newA();
a.show(10);//此时这里会报错。因为不是String类型的参数
}
}
但是你这么写:
public<String>voidshow(Strings)
//或者public<String>voidshow(ints)之类的都一样,都是错误的
就导致了类型隐藏,具体警告信息:The type parameter String is hiding the type String
所以编译器会认为其实你写的是:
public<T>voidshow(Ts)
所以即使参数是int类型,show()方法也能正常工作。
B. java类的泛型方法调用问题
泛型可以用"<T>"代表,任意类型的,泛型方法需要什么方法类型,直接定义相应的参数即可。
解释: “<T>”是泛型的默认值,可以被任意类型所代替,如:
List<String> list = new ArayList<String>();这个就定义了一个String类型的”泛型“集合,那么T的类型就是字符串。
List<String> list = new ArayList<String>();//此处就定义了一个list参数类型,
list.add("StringBatch");//赋值给list
User user = new User();
String str = user.get(list);//这个list就是一个泛型方法值,这行代码就是泛型方法的调用。
C. java 泛型类和泛型方法的区别
在java中
泛型类:是在实例化类的时候指明泛型的具体类型。
泛型方法:是在调用方法的时候指明泛型的具体类型。
定义泛型方法时:必须在返回值前边加一个<T>,来声明这是一个泛型方法,持有一个泛型T,然后才可以用泛型T作为方法的返回值,泛型方法不是仅仅可以有一个参数Class<T>,可以根据需要添加其他参数。
定义泛型类时:Class<T>的作用就是指明泛型的具体类型,而Class<T>类型的变量C,可以用来创建泛型类的对象
D. JAVA中的泛型用法一种: <T> 返回值用法。
1、对于泛型方法来说,是可以接收不同类型的参数,比如下图,使用泛型来操作List集合,然后向List中添加一条数据,看是否可以添加成功,创建泛型方法如图所示。
E. java 中如何调用泛型的方法
这种也使用泛型,就很难达到设计的意愿,维护起来也相对困难一些。
这要求不是泛型的使用,因为类型不确定,而是要使用反射的方法调用了。