【Java学习笔记】36:泛型的类型变量的限定
2017-08-30 19:48
495 查看
首先,在泛型编程中的类型参数只能被实例化为引用类型的,而不能是基本类型的。
在这里借用extends关键字做抽象类型的限定,即便是要求这个抽象类型它实现了一个接口。
*对泛型类的限定
运行结果:
17,-5
8,-10
*对泛型方法的限定
运行结果:
17,-5
8,-10
在这里借用extends关键字做抽象类型的限定,即便是要求这个抽象类型它实现了一个接口。
*对泛型类的限定
package day36; class MyInt implements Comparable<MyInt>{ int i; public MyInt(int i) { this.i = i; } @Override public String toString() { return i+""; } @Override public int compareTo(MyInt o) { if(this.i>o.i) return 1; else if(this.i<o.i) return -1; return 0; } } public class Test { public static void main(String[] args) { Integer[] i1={1,4,-5,17}; MyClass<Integer> m1=new MyClass<Integer>(); System.out.println(m1.max(i1)+","+m1.min(i1)); MyInt[] i2={new MyInt(3),new MyInt(-9),new MyInt(7),new MyInt(-10),new MyInt(8)}; MyClass<MyInt> m2=new MyClass<MyInt>(); System.out.println(m2.max(i2)+","+m2.min(i2)); } } //这个类必须实现了Comparable接口,即对其做了这样的限定 c1a8 class MyClass<T extends Comparable<T>>{ //获得数组中的最大值 public T max(T[] a){ T m=a[0]; for(T x:a) { if(x.compareTo(m)>0)//表示比m大 m=x; } return m; } //获得数组中的最小值 public T min(T[] a){ T m=a[0]; for(T x:a) { if(x.compareTo(m)<0)//表示比m小 m=x; } return m; } }
运行结果:
17,-5
8,-10
*对泛型方法的限定
package day36; class MyInt implements Comparable<MyInt>{ int i; public MyInt(int i) { this.i = i; } @Override public String toString() { return i+""; } @Override public int compareTo(MyInt o) { if(this.i>o.i) return 1; else if(this.i<o.i) return -1; return 0; } } public class Test { public static void main(String[] args) { //这种方式可以共用相同的Class,将泛型做的更彻底 MyClass m=new MyClass(); Integer[] i1={1,4,-5,17}; System.out.println(m.max(i1)+","+m.min(i1)); MyInt[] i2={new MyInt(3),new MyInt(-9),new MyInt(7),new MyInt(-10),new MyInt(8)}; System.out.println(m.max(i2)+","+m.min(i2)); } } //在普通类的内部建立泛型方法,并对方法本身作限定 class MyClass{ //获得数组中的最大值 public <T extends Comparable<T>> T max(T[] a){ T m=a[0]; for(T x:a) { if(x.compareTo(m)>0)//表示比m大 m=x; } return m; } //获得数组中的最小值 public <T extends Comparable<T>> T min(T[] a){ T m=a[0]; for(T x:a) { if(x.compareTo(m)<0)//表示比m小 m=x; } return m; } }
运行结果:
17,-5
8,-10
相关文章推荐
- java基础学习笔记原始类型变量赋值与非原始变量赋值
- Java学习笔记---关键字、变量与数据类型
- 【Java学习笔记】基本类型变量的操作
- Java学习笔记-泛型及类型擦除
- JAVA学习笔记3--类,对象,变量,方法,构造方法,this,引用类型
- 黑马程序员_java基础学习笔记01_变量,数据类型,运算符
- java学习笔记之六——变量的类型转换
- java学习笔记(常量 二进制 其他进制 负数进制 变量 自动类型提升 强制类型转换 )
- objective-c学习笔记第七章《objective-c 数据类型和变量与java中的区别》
- JAVA学习笔记2 - 变量类型与修饰符
- java学习笔记---String类型的变量“相等”
- Java学习笔记三:Java的变量、常量、变量的类型及使用规则
- Java学习笔记-变量与数据类型
- Java基础学习笔记【08】泛型限定、泛型操作
- 黑马程序员_Java常量、变量、数据类型和运算符的学习笔记
- Java学习笔记摘录(标识符/变量是什么/如何命名变量/数据类型/变量的使用规则)
- Java学习笔记3、变量、数据类型
- 【Java学习笔记】解惑:string类型变量“不可变”?
- Java学习笔记(三)之― Java中的变量、数据类型、运算符、类型转换
- [学习笔记]Java数据类型,变量和运算符