泛型
泛型类的使用
package com.study.classReuse.generalType;
class GeneralType<Type>{ // 泛型,所操作的数据类型被指定成一个参数Type
Type obj;
public GeneralType(Type obj){
this.obj = obj;
} // 构造方法
public Type getObj(){ // get方法
return obj;
}
}
public class GeneralTypeTester {
public static void main(String[] args) {
GeneralType<Integer> i = new GeneralType<>(2); // 自定义Type为整数Integer
GeneralType<Double> d = new GeneralType<>(3.14); // 自定义Type为整数Double
System.out.println("i.obj="+i.getObj()); // 获取i的值
System.out.println("d.obj="+d.getObj()); // 获取d的值
System.out.println("(Integer)i.obj="+(Integer)i.getObj());
// System.out.println("(Integer)d.obj="+(int)d.getObj()); // 编译报错,包装类对象的强制转换(非法)
System.out.println(""+(int)3.14); // 基本数据类型之间的强制转换(合法)
}
}
i.obj=2
d.obj=3.14
(Integer)i.obj=2
3
泛型方法的使用
package com.study.classReuse.generalType;
class GeneralMethod {
// 定义泛型方法,如打印对象类名方法
<Type> void printClassName(Type obj){
System.out.println(obj.getClass().getName());
}
}
public class GeneralMethodTester {
public static void main(String[] args) {
GeneralMethod gm = new GeneralMethod();
gm.printClassName("你好"); // 引用数据类型Type为String
gm.printClassName('A'); // 引用数据类型Type为Character
gm.printClassName(3); // 引用数据类型Type为Integer
gm.printClassName(3.0f); // 引用数据类型Type为Float
gm.printClassName(3.14); // 引用数据类型Type为Double
}
}
java.lang.String
java.lang.Character
java.lang.Integer
java.lang.Float
java.lang.Double
通配符的使用
package com.study.classReuse.generalType;
// 泛型中通配符的使用
class GeneralType4<Type4> {
Type4 obj; // 用泛型参数定义成员变量,类型由使用时指定
// 构造方法,接收Type4类型的参数,初始化obj
public GeneralType4(Type4 newObj) {
this.obj = newObj;
}
// get方法,返回Type4类型的obj,和成员变量类型一致
public Type4 getObj() {
return obj;
}
}
class ShowType{
// 打印数据类型
public static void showType(GeneralType4<?> o) { // GeneralType<?>代表是任意泛型参数的GeneralType4
System.out.println(o.getObj().getClass().getName()); // 获取o包装的对象的实际类型名称,然后打印
// 之前的问题是 “GeneralType2<Integer>不能传给GeneralType2<Object>”,
// 而?代表任意泛型参数,所以不管GeneralType4的泛型参数是Integer、String还是其他类型,都能传给这个方法。
}
}
public class TheUseOfWildcards {
public static void main(String[] args) {
GeneralType4<Integer> i = new GeneralType4<>(2);
GeneralType4<String> s = new GeneralType4<>("你好");
ShowType.showType(i);
ShowType.showType(s);
}
}
java.lang.Integer
java.lang.String
1146

被折叠的 条评论
为什么被折叠?



