出现的意义
- 为编码阶段的不确定性和转化做视觉设计
- 讲运行期遇到的问题转移到了编译期,省去了强转的麻烦
语法
<T,T>返回2个值通用
注:在Java中,经常用T、E、K、V等形式的参数来表示泛型参数。
T:代表一般的任何类。
E:代表 Element 的意思,或者 Exception 异常的意思。
K:代表 Key 的意思。
V:代表 Value 的意思,通常与 K 一起配合使用。
package course.basic.str;
/**
* @author m_long
* @date 2020/6/25 9:57 下午
*/
public class LocalPair1 {
private Object val1;
private Object val2;
public LocalPair1(Object val1, Object val2) {
this.val1 = val1;
this.val2 = val2;
}
public Object getVal1() {
return val1;
}
public Object getVal2() {
return val2;
}
}
package course.basic.str;
import java.util.Date;
/**
* @author m_long
* @date 2020/6/25 10:01 下午
*/
public class LocalPair2App {
public static void main(String[] args) {
LocalPair2<String, String> pair = foo1();
String val1 = pair.getK();
String val2 = pair.getV();
String[] arr1 = val1.split(",");
String[] arr2 = val2.split(",");
/**
* 循环的一种写法
* String[] ni=new String[]{"国家","nih"};
* for (String i : ni) {
* System.out.println(i);
* 输出是
* 国家
* nih
*/
for (String s : arr1) {
System.out.println("val1," + s);
}
for (String s : arr2) {
System.out.println("val2," + s);
}
}
public static LocalPair2<String, String> foo1() {
// 1.String,String ->
LocalPair2<String, String> pair1 = new LocalPair2<>("abc,abc", "bcd,bcd");
// 经过了一堆的逻辑处理
return pair1;
}
public static LocalPair2<String, Integer> foo2() {
// 2.String,Integer ->
LocalPair2<String, Integer> pair2 = new LocalPair2<>("abc", 1024);
return pair2;
}
public static LocalPair2<Integer, Date> foo3() {
// 3.Integer, Date ->
LocalPair2<Integer, Date> pair3 = new LocalPair2<>(1024, new Date());
return pair3;
}
}
编译期报错
语法
静态
非静态
在这里插入代码片
Pail(一对),引用commons.lang3提供的方法
return2个数据,用pair
import org.apache.commons.lang3.tuple.Pair;
package course.basic.str;
import org.apache.commons.lang3.tuple.Pair;
import java.util.Date;
/**
* @author m_long
* @date 2020/6/26 11:45 上午
*/
public class CommonsPair {
public static void main(String[] args) {
Pair<String ,String> pair1 = Pair.of("abc","bcd");
pair1.getKey();
pair1.getLeft();
pair1.getValue();
pair1.getRight();
Pair<String, Integer> pair2 = Pair.of("abc", 1024);
Pair<Date, Integer> pair = Pair.of(new Date(), 1024);
Pair<Date, Integer> pair3 = Pair.of(new Date(), 1024);
}
}
面试
泛型使用场景,解决了什么问题。