gpt4 book ai didi

java - 返回类型不正确的泛型和 BiPredicate

转载 作者:行者123 更新时间:2023-12-01 16:47:52 25 4
gpt4 key购买 nike

在学习Java 8的类(class)时我们现在进入主题GenericsLambda expressions 。我们被要求制作以下方法 Generic而不是String仅:

public static String betterString(String s1,String s2,IBetterString bs){
if(bs.isBetter(s1, s2)){
return s1;
}else{
return s2;
}
}

到目前为止我所做的如下:

public static <T> betterEllement(T s1, T s2, BiPredicate<T, T> bi) {
if (bi.test(s1, s2)) {
return s1;
} else {
return s2;
}
}

但看来我的Return type根据 Intellij 的说法是不正确的。我真的不明白为什么会这样,因为我定义了 <T>作为此方法的返回类型。抱歉,如果这是一个愚蠢的问题,我只是一个初学者,想了解为什么它不正确。

最佳答案

因为你使用你的方法没有返回任何内容。 <T>定义它是一个尚不知道的通用类型。这并不意味着您要返回。您需要添加另一个 T,它是通用 Type 返回值。

public static <T> T betterEllement(T s1, T s2, BiPredicate<T, T> bi) {
if (bi.test(s1, s2)) {
return s1;
} else {
return s2;
}
}

<T>如果您知道返回值但想要定义通用参数,也可以使用。

public static <T> String getStringTest(T test) { 
if (test.getClass().isInstance(WhatEver.class)) { ....}
return "test";
}

您可以使用通用类完美地看到它。

class TestGeneric<T> {
public T betterElement(T s1) { /** .. **/ return null; }
}

关于java - 返回类型不正确的泛型和 BiPredicate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46522041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com