gpt4 book ai didi

java - 调用通用方法java的编译器错误

转载 作者:行者123 更新时间:2023-11-29 08:29:32 26 4
gpt4 key购买 nike

我创建了一个只有很少方法的通用类。我只想调用该方法并添加值,但它不起作用。这是代码

public interface GenericInterface<T> {
public T getValue();
public void setValue(T t);
}

public class FirstGeneric<T> implements GenericInterface<T> {
private T value;

public FirstGeneric(T _value) {
this.value = _value;
}

@Override
public T getValue() {
return value;
}

@Override
public void setValue(T t) {
this.value = t;
}

@SuppressWarnings("unchecked")
public static <T> T addValues(FirstGeneric<T> myGeneric, FirstGeneric<T> myGeneric1) {
T result = null;
if (myGeneric != null && myGeneric1 != null) {
T t1 = myGeneric.getValue();
T t2 = myGeneric1.getValue();
result = (T) t1.toString().concat(t2.toString());
System.out.println("Result is:=" + result);
}
return result;
}

public static void main(String args[]) {
Integer int1 = 1;
FirstGeneric<Integer> myInt = new FirstGeneric<Integer>(int1);
String value = "Hello";
FirstGeneric<String> myString = new FirstGeneric<String>(value);
addValues(myString, myInt);
}
}

但是我在最后一行遇到了编译错误。

FirstGeneric 类型中的方法 addValues(FirstGeneric, FirstGeneric) 不适用于参数 (FirstGeneric, FirstGeneric)

我做错了什么?谢谢。

最佳答案

addValues有一个通用类型参数,这意味着你不能同时向它传递 FirstGeneric<Integer>和一个 FirstGeneric<String> .

制作addValues(myString, myInt)调用有效,你可以在你的方法中定义两个泛型类型参数:

public static <T,U> String addValues(FirstGeneric<T> myGeneric, FirstGeneric<U> 
myGeneric1) {
String result = null;
if (myGeneric != null && myGeneric1 != null) {
T t1 = myGeneric.getValue();
U t2 = myGeneric1.getValue();
result = t1.toString().concat(t2.toString());
System.out.println("Result is:=" + result);
}
return result;
}

请注意,我将返回类型更改为 String ,因为它显然是 String (由 t1.toString().concat(t2.toString()) 制作),因此您不能将其转换为 T希望T将是 String .

关于java - 调用通用方法java的编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49487140/

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