Java泛型方法定义及泛型类型推断
2023-09-27 14:27:41 时间
泛型的推断
@Test
public void test3(){
//类型推断时使用两个类型的最小公倍数
int x1 = add(3,4);
Number x2 = add(3.5,4);
Object obj = add(3,"abc");
}
//在返回类型前加上<T>
public <T> T add(T x,T y){
return x;
}
传入一个数组,交换其中的两项:
@Test
public void test4(){
String[] result = swap(new String[]{"abc","xyz","999"}, 1, 2);
for(String s:result){
System.out.println(s);
}
Book[] bs = swap(new Book[]{new Book("三国演义","罗贯中"),new Book("水浒传","施耐庵"),new Book("红楼梦","曹雪芹")}, 0, 2);
for(Book b:bs){
System.out.println(b.getName()+","+b.getAuthor());
}
//以下做法错误,T不可以为基本类型
//int[] arr = swap(new int[]{1,2,3},1,2);
}
//在返回类型前加上<T>
public <T> T[] swap(T[] a,int i,int j){
T temp = a[i];
a[i] = a[j];
a[j] = temp;
return a;
}
定义泛型时限定类型:
@Test
public void test4(){
String[] result = swap(new String[]{"abc","xyz","999"}, 1, 2);
for(String s:result){
System.out.println(s);
}
Book[] bs = swap(new Book[]{new Book("三国演义","罗贯中"),new Book("水浒传","施耐庵"),new Book("红楼梦","曹雪芹")}, 0, 2);
for(Book b:bs){
System.out.println(b.getName()+","+b.getAuthor());
}
//以下做法错误,T不可以为基本类型
//int[] arr = swap(new int[]{1,2,3},1,2);
}
//在返回类型前加上<T>
public <T extends Object> T[] swap(T[] a,int i,int j){
T temp = a[i];
a[i] = a[j];
a[j] = temp;
return a;
}
上面代码要求T要是Object的子类,这其实是废话,如果把Object改为Number则编译时上面的两个方法都会报错,因为String和Book类都不是Number的子类。
相关文章
- Java基础之hashCode方法具体解释
- Java两种拼接http Get请求参数URL连接地址的方法
- Java 中的 BigDecimal,你真的会用吗?
- java:compareTo和compare方法之比较
- Java的Map中的map.keySet()方法
- 2017年网易校招Java面试题
- 设计模式java——模板方法模式
- Java中BigDecimal比较大小的方法BigDecimal转换为Integer
- 《Java和Android开发学习指南(第2版)》—— 第2章 语言基础 2.1 ASCII和Unicode
- Java实现数组反转翻转的方法
- 在Java中实现UDP协议编程(DatagramSocket/DatagramPacket)
- Java泛型:泛型类、泛型接口和泛型方法
- Java RestTemplate 请求参数字符串中有大括号{}的请求正确方法
- JAVA中IO技术:BIO、NIO、AIO
- Java学习-029-JSON 之三 -- 模仿 cssSelector 封装读取 JSON 数据方法
- Java学习-026-类名或方法名应用之二 -- 统计分析基础
- java贪吃蛇小游戏详解
- Java中的反射
- Cas_Java客户端登录相关过滤器的处理流程
- Java关键字final学习(变量、方法、类,final域重排序语义介绍)
- Java中字符串中子串的查找共有四种方法(indexof())
- 【Java 并发编程】Java 线程的生命周期