java中参数 super object
时间: 2024-01-27 10:04:25 浏览: 54
Java 中的 super 关键字也是用于调用父类的构造方法或实例方法。在子类中,我们可以使用 super 调用父类的构造方法来初始化父类的成员变量,也可以使用 super 调用父类的实例方法来执行父类中的代码。与 Python 不同的是,Java 中的 super 关键字需要指定参数,用来明确调用的是哪个父类的构造方法或实例方法。例如,super() 表示调用父类的无参构造方法,super(argument) 表示调用父类带有参数的构造方法,并传递参数 argument。在使用 super 关键字时需要注意,必须在子类构造方法或实例方法的第一行调用 super,否则会编译错误。
相关问题
java: 对于sort(int[],(o1,o2)->o2 - o1), 找不到合适的方法 方法 java.util.Arrays.<T>sort(T[],java.util.Comparator<? super T>)不适用 (推论变量 T 具有不兼容的限制范围 等式约束条件: int 上限: java.lang.Object) 方法 java.util.Arrays.<T>sort(T[],int,int,java.util.Comparator<? super T>)不适用 (无法推断类型变量 T (实际参数列表和形式参数列表长度不同))
这个错误提示表明使用lambda表达式时,编译器无法推断出泛型类型参数T的具体类型,需要显式指定泛型类型参数,示例代码如下:
```
int[] arr = {5, 2, 8, 1, 9};
Arrays.sort(arr, (Integer o1, Integer o2) -> o2 - o1);
System.out.println(Arrays.toString(arr)); // 输出 [9, 8, 5, 2, 1]
```
以上代码中,显式指定了泛型类型参数为Integer,即`(Integer o1, Integer o2) -> o2 - o1`,表示o2大于o1时返回正数,o2等于o1时返回0,o2小于o1时返回负数,实现降序排列。
Function<? super Object, V> mapper 什么意思
`Function<? super Object, V> mapper` 中的 `Function` 是 Java 中的函数式接口,表示一个函数,用于将一个输入(Object 类型)映射为一个输出(V 类型)。其中,`<? super Object>` 表示输入参数可以是 Object 类型或 Object 的某个父类,而 `V` 表示输出参数的类型。
通常情况下,`mapper` 会被用于在集合或流中对元素进行转换或映射,例如:
```java
List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
Map<String, Integer> nameLengths = names.stream()
.collect(Collectors.toMap(Function.identity(), String::length));
```
在上述代码中,`Function.identity()` 表示一个函数,将输入参数直接返回,即不做任何转换,而 `String::length` 则表示一个函数,将输入字符串的长度作为输出。`toMap` 方法会将 names 中的每个元素作为键,对应的长度作为值,最终返回一个 Map 对象。
阅读全文