标签:public %s inpu 标识 ext double pre 打印 其他
Java泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。当需要使用某一种算法时,又无法具体算法的数据类型,或者想指定类型值的上限或下限,那么这时就需要Java泛型来大显身手了!
泛型方法的规则:
实例:
一、定义一个泛型方法来打印对象数组元素
1 public static <E> void printArray(E[] inputArray){ 2 for(E elements:inputArray){ 3 System.out.print(elements); 4 } 5 } 6 7 public static void main(String[] args){ 8 Integer[] intArray={4,5,6,5,8}; 9 Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4 }; 10 Character[] charArray = { ‘H‘, ‘E‘, ‘L‘, ‘L‘, ‘O‘ }; 11 12 System.out.println( "整型数组元素为:" ); 13 printArray( intArray ); 14 15 System.out.println( "\n双精度型数组元素为:" ); 16 printArray( doubleArray ); 17 18 System.out.println( "\n字符型数组元素为:" ); 19 printArray( charArray ); 20 }
二、定义一个泛型方法来对数字进行排序(extends 使用)
1 public static <E extends Comparable> E searchMaxnumber(E x,E y,E z){ 2 E maxNumber=x; 3 if(y.compareTo(maxNumber) > 0){ 4 maxNumber=y; 5 } 6 if(z.compareTo(maxNumber)>0){ 7 maxNumber=z; 8 } 9 return maxNumber; 10 } 11 12 public static void main(String[] args){ 13 System.out.printf( "%d, %d 和 %d 中最大的数为 %d\n\n", 14 3, 4, 5, searchMaxnumber( 3, 4, 5 ) ); 15 System.out.printf( "%.1f, %.1f 和 %.1f 中最大的数为 %.1f\n\n", 16 6.6, 8.8, 7.7, searchMaxnumber( 6.6, 8.8, 7.7 ) ); 17 System.out.printf( "%s, %s 和 %s 中最大的数为 %s\n","pear", 18 "apple", "orange", searchMaxnumber( "pear", "apple", "orange" ) ); 19 }
三、泛型类的定义
1 public class GenericityExam<E> { 2 3 private E e; 4 5 public E get(){ 6 return e; 7 } 8 9 public void put(E e){ 10 this.e=e; 11 } 12 13 public static void main(String[] args) { 14 GenericityExam<Integer> integerVal = new GenericityExam<Integer>(); 15 GenericityExam<Character> charVal = new GenericityExam<Character>(); 16 17 integerVal.put(new Integer(10)); 18 charVal.put(new Character(‘s‘)); 19 20 System.out.printf("整型值为 :%d\n", integerVal.get()); 21 System.out.printf("字符为 :%c\n", charVal.get()); 22 } 23 24 }
四、类型通配符上限泛型
public static <E> void listGen(List<? extends E> data){
for(E listData:data){
System.out.println("data :" + listData);
}
}
public static void main(String[] args) {
List<Integer> listIn = new ArrayList<>();
List<Number> listNu = new ArrayList<>();
listIn.add(18);
listIn.add(45);
listNu.add(314);
listNu.add(789);
listGen(listIn);
listGen(listNu);
}
泛型定义好后,在运行期间会变化为Object类型。
标签:public %s inpu 标识 ext double pre 打印 其他
原文地址:https://www.cnblogs.com/award/p/9096779.html