一. 泛型
解决支持多类型参数的方案:
1, 重载: 在同一个类中,方法名相同,参数不同
不足之处: 代码过于重复
public class Tool{
public String arrToStr(String[] arr, String symbol){
String str = "";
for(String v: arr){
str += symbol + v;
}
return str.substring(symbol.length());
}
public String arrToStr(int[] arr, String symbol){
String str = "";
for(int v: arr){
str += symbol + v;
}
return str.substring(symbol.length());
}
public String arrToStr(double[] arr, String symbol){
String str = "";
for(double v: arr){
str += symbol + v;
}
return str.substring(symbol.length());
}
}
2, 使用Object
好处: 简单
不足: 什么都支持(类型无法得到限制)
public class Tool{
public String arrToStr(Object[] arr, String symbol){
String str = "";
for(Object v: arr){
str += symbol + v;
}
return str.substring(symbol.length());
}
}
3, 泛型: 广泛的类型(默认为任意类型)
但是泛型可以设置上限(以继承的方式实现)
3.1 定义方法泛型
public class Tool{
//<X>: 程序员定义的一种数据类型即泛型,泛型名: X
//X : 默认为Object
public <X> String arrToStr(X[] arr, String symbol){
String str = "";
for(X v: arr){
str += symbol + v;
}
return str.substring(symbol.length());
}
//设置上限为Number
public static <X extends Number> String arrToStr(X[] arr, String symbol){
String str = "";
for(X v: arr){
str += symbol + v;
}
return str.substring(symbol.length());
}
}
3.2 类泛型定义
public class Datas <X>{
private X x;
public Datas(X x){
this.x = x;
}
public X getX(){
return x;
}
public void setX(X x){
this.x = x;
}
public static void main(String[] args) {
Datas datas = new Datas(50);
//不声明: X为Object
Datas datas1 = new Datas("哈哈");
Datas<Car> datas2 = new Datas<>(new Car("吉利",30));
//声明 X为 Car类型
Datas<Integer> datas3 = new Datas<>(50);
}
}
标签:arr,Java,String,symbol,参数,str,泛型,public,Datas From: https://www.cnblogs.com/njhwy/p/18399532