java 带参数的异步函数 java第十四章带参数的方法_java 带参数的异步函数

3.1泛型概述和好处【理解】

泛型概述

是JDK5中引入的特性,它提供了编译时类型安全检测机制,该机制允许在编译时检测到非法的类型

它的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,然后在使用/调用时传入具体的类型。这种参数类型可以用在类、方法和接口中,分别被称为泛型类、泛型方法、泛型接口

泛型定义格式

:指定一种类型的格式。这里的类型可以看成是形参

:指定多种类型的格式,多种类型之间用逗号隔开。这里的类型可以看成是形参

将来具体调用时候给定的类型可以看成是实参,并且实参的类型只能是引用数据类型

泛型的好处

把运行时期的问题提前到了编译期间

避免了强制类型转换

3.2泛型类【应用】

定义格式

修饰符 class 类名 { }

示例代码

泛型类

public class Generic {
private T t;
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
}

测试类

public class GenericDemo {
public static void main(String[] args) {
Generic g1 = new Generic();
g1.setT("林青霞");
System.out.println(g1.getT());
Generic g2 = new Generic();
g2.setT(30);
System.out.println(g2.getT());
Generic g3 = new Generic();
g3.setT(true);
System.out.println(g3.getT());
}
}

3.3泛型方法【应用】

定义格式

修饰符 返回值类型 方法名(类型 变量名) { }

示例代码

带有泛型方法的类

public class Generic {
public void show(T t) {
System.out.println(t);
}
}

测试类

public class GenericDemo {
public static void main(String[] args) {
Generic g = new Generic();
g.show("林青霞");
g.show(30);
g.show(true);
g.show(12.34);
}
}

3.4泛型接口【应用】

定义格式

修饰符 interface 接口名 { }

示例代码

泛型接口

public interface Generic {
void show(T t);
}

泛型接口实现类

public class GenericImpl implements Generic {
@Override
public void show(T t) {
System.out.println(t);
}
}

测试类

public class GenericDemo {
public static void main(String[] args) {
Generic g1 = new GenericImpl();
g1.show("林青霞");
Generic g2 = new GenericImpl();
g2.show(30);
}
}

4.可变参数

4.1可变参数【应用】

可变参数介绍

可变参数又称参数个数可变,用作方法的形参出现,那么方法参数个数就是可变的了

可变参数定义格式

修饰符 返回值类型 方法名(数据类型… 变量名) { }

可变参数的注意事项

这里的变量其实是一个数组

如果一个方法有多个参数,包含可变参数,可变参数要放在最后

可变参数的基本使用

public class ArgsDemo01 {
public static void main(String[] args) {
System.out.println(sum(10, 20));
System.out.println(sum(10, 20, 30));
System.out.println(sum(10, 20, 30, 40));
System.out.println(sum(10,20,30,40,50));
System.out.println(sum(10,20,30,40,50,60));
System.out.println(sum(10,20,30,40,50,60,70));
System.out.println(sum(10,20,30,40,50,60,70,80,90,100));
}
// public static int sum(int b,int... a) {
// return 0;
// }
public static int sum(int... a) {
int sum = 0;
for(int i : a) {
sum += i;
}
return sum;
}
}