【Java基础语法】如何在使用静态方法的时候指定其泛型?万分感谢!

Python011

【Java基础语法】如何在使用静态方法的时候指定其泛型?万分感谢!,第1张

举个例子:

public void f(int i, char ch, String s){}

这个方法中有三个参数,分别为int类型的i,char类型的ch,String类型的s。这三个参数的类型都已经指定了,如果实际参数类型和对应参数类型不一致,编译器会出现错误。

如何才能做到可以任意指定参数的类型呢?这个时候可以使用泛型方法。举个例子:

public <A, B, C>void f(A a, B b, C c){}

这个就是所谓的泛型方法,当向方法中传递参数后,编译器会自动推断出参数的类型,如:

f(1, "hello", 123.123)

第一个参数类型为Integer,第二个为String,第三个为Double(自动包装机制让基本类型自动包装成对应的包装类)。

泛型方法的特征就是方法前面有对尖括号<>,尖括号里面的就是类型参数,也就是说类型是个变量,要由实际的参数推断得来。

Java中的方法就是这样获取泛型能力的,还有其他方式。但是static方法比较特殊,如果要使得static方法具有反省能力就必须要使用到上面的方法。

希望能解决你的问题。

泛型。规定了此集合中元素的类型。例如:\x0d\x0a\x0d\x0aArrayList arr = new ArrayList ()\x0d\x0a\x0d\x0a这样就创建了一个包含整数的 ArrayList 对象。\x0d\x0a如果要自己定义泛型类,就用如下形式:\x0d\x0a\x0d\x0aclass MyCollection {...}\x0d\x0a\x0d\x0a尖括号中的类型可以有限制,例如你需要让 MyCollection 中的类型都具有可比性,可以用如下格式:\x0d\x0a\x0d\x0aclass MyCollection {...}\x0d\x0a\x0d\x0a此外,要注意泛型的一些特性:\x0d\x0a\x0d\x0a1. 不能直接创建泛型数组。如 new ArrayList[5] 之类的是错的。只能用如下方法:new ArrayList[5] 或者 (ArrayList[])new ArrayList[5]\x0d\x0a\x0d\x0a2. 静态方法中需要小心,因为 E 一般是非静态类型,如果你这样写:\x0d\x0a class MyCollection {\x0d\x0a public static MyCollection abc() {\x0d\x0a ......\x0d\x0a }\x0d\x0a }\x0d\x0a 是错的。你只能把 去掉。