水
Box<String> stringBox = new Box<String>();
这是菜鸟里的一小部分实例,我觉得这个最直白也最易了解。String就对应着一个字符串类型。
这里是引用网上的标准定义:Java 泛型的参数只可以代表类,不能代表个别对象。由于 Java 泛型的类型参数之实际类型在编译时会被消除,所以无法在运行时得知其类型参数的类型。Java 编译器在编译泛型时会自动加入类型转换的编码,故运行速度不会因为使用泛型而 加快。Java 允许对个别泛型的类型参数进行约束,包括以下两种形式(假设 T 是泛型的类型参数,C 是一般类、泛类,或是泛型的类型参数):T 实现接口 I 。T 是 C ,或继承自 C 。一个泛型类不能实现Throwable接口。
对我们小白而言,总结一下就是:1.泛型类不能代表个别对象 2.不会因为使用泛型使运行速度加快。
那么我们为什么要使用泛型呢,给自己添加烦恼嘛? 当然不是的。
1.使用泛型能使我们的类型更加安全。在没有泛型以前,所有都使用Object,然后强制类型转换。这些转换过程就不是这么的安全。
2.使用泛型可以针对不同的类采取相同的处理办法。并且类与类之间不一定有继承关系。
(还有嗷,他向后兼容)
偷个懒直接用菜鸟的代码,看看如何用泛型方法打印不同类型的数组元素:
package z1;
public class Boke2
{
// 泛型方法 printArray
public static < E > void printArray( E[] inputArray )
{
// 输出数组元素
for ( E element : inputArray ){
System.out.printf( "%s ", element );
}
System.out.println();
}
public static void main( String args[] )
{
// 创建不同类型数组: Integer, Double 和 Character
Integer[] intArray = { 1, 2, 3, 4, 5 };
Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 };
Character[] charArray = { 'H', 'E', 'L', 'L', 'O' };
System.out.println( "整型数组元素为:" );
printArray( intArray ); // 传递一个整型数组
System.out.println( "\n双精度型数组元素为:" );
printArray( doubleArray ); // 传递一个双精度型数组
System.out.println( "\n字符型数组元素为:" );
printArray( charArray ); // 传递一个字符型数组
}
}
如果大家对泛型有兴趣,可以来这里看看:菜鸟教程
学术有限,只能同为白白的小伙伴们做推荐了,笑哭.jpg