泛型

泛型
SilverCatList
Java 泛型是 JDK 5 中引入的一个新特性,它提供了编译时类型安全检测机制,允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数1。
不能是基本类型
Consumer(消费者)
Consumer是一个函数式接口,它接收一个参数并且没有返回值。在 Java 中,你可以使用
Consumer来执行一些操作,例如遍历集合并对每个元素执行某些操作。下面是一个示例:import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
public class ConsumerExample {
public static void main(String[] args) {
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
names.add("Charlie");
// 使用 Consumer 遍历并打印每个名字
Consumer<String> printName = name -> System.out.println("Hello, " + name);
names.forEach(printName);
}
}Supplier(提供者)
Supplier是一个函数式接口,它不接收参数但返回一个值。你可以使用
Supplier来生成一些值,例如随机数、默认配置等。下面是一个示例:import java.util.function.Supplier;
public class SupplierExample {
public static void main(String[] args) {
// 使用 Supplier 生成一个随机整数
Supplier<Integer> randomIntSupplier = () -> (int) (Math.random() * 100);
int randomInt = randomIntSupplier.get();
System.out.println("随机整数:" + randomInt);
}
}Predicate(谓词,绝断)
Predicate是一个函数式接口,它接收一个参数并返回一个布尔值。你可以使用
Predicate来进行条件判断,例如筛选集合中满足某个条件的元素。下面是一个示例:import java.util.function.Predicate;
public class PredicateExample {
public static void main(String[] args) {
// 使用 Predicate 判断是否为偶数
Predicate<Integer> isEven = num -> num % 2 == 0;
System.out.println("Is 5 even? " + isEven.test(5));
System.out.println("Is 10 even? " + isEven.test(10));
}
}Function(函数)
Function是一个函数式接口,它接收一个参数并返回一个值。你可以使用
Function来执行一些转换操作,例如将一个类型的值转换为另一个类型。下面是一个示例:import java.util.function.Function;
public class FunctionExample {
public static void main(String[] args) {
// 使用 Function 将字符串转换为大写
Function<String, String> toUpperCase = str -> str.toUpperCase();
System.out.println(toUpperCase.apply("hello"));
}
}Bi(二元运算)
这个概念通常用于描述操作的参数个数。
Bi表示二元运算,需要两个参数,例如a+bUnary(一元运算)
而
Unary表示一元运算,只需要一个参数,例如自增或自减操作(i++,i–)。类型名称中有基本类型,弥补泛型接口
不能用基本类型的不足
To( 转化)
T的含义是to,表示 “到” 或 “转换为” 的意思。在这些接口的上下文中,“To” 表示这些函数的返回类型。例如,ToIntFunction接口表示一个函数,它接受一个参数并返回一个int类型的结果BiConsumer
只是接收两个参数,并没有返回值,例如遍历集合并对每个元素执行某些操作
// 创建一个BiConsumer接口的实例,该接口接受两个String类型的输入参数s1和s2
BiConsumer<String, String> biConsumer= (s1, s2) -> {
// 输出这两个参数,中间用空格隔开
System.out.println(s1 + " " + s2);
};
// 调用biConsumer的accept方法,传入"李东"和"是大聪明"作为参数
biConsumer.accept("李东","是大聪明");BiFunction
接口表示一个接收两个参数并产生一个结果的函数。
// 创建一个BiFunction接口的实例,该接口接受两个Integer类型的输入参数a和b,并返回它们的和
BiFunction<Integer, Integer, Integer> add = (a, b) -> a + b;
// 调用add的apply方法,传入1和2作为参数,然后输出它们的和
System.out.println(add.apply(1,2));asd
asd




