无法从静态内容引用Java泛型和方法

无法从静态内容引用Java泛型和方法,java,generics,Java,Generics,在学习Java课程时,我被要求将常规类转换为泛型类。我想我成功了一部分,但是我找不到一个方法使它100%正确 public class ElementUtils { public static <T> List transformedList(List<T> inList, Function<T, T> f) { List<T> outList = new ArrayList<>(); for (

在学习Java课程时,我被要求将常规类转换为泛型类。我想我成功了一部分,但是我找不到一个方法使它100%正确

public class ElementUtils {
    public static <T> List transformedList(List<T> inList, Function<T, T> f) {
        List<T> outList = new ArrayList<>();
        for (T s : inList) {
            outList.add(f.apply(s));
        }
        return outList;
    }
}

我不明白我错过了什么。。。感谢您的帮助。

您为输入和输出提供了相同的通用类型T。您需要输入类型T和结果类型R,还需要返回类型R的列表以消除警告

public static <T,R> List<T> transformedList(List<T> inList, Function<T, R> f) {
    List<R> outList = new ArrayList<>();
    for (T s : inList) {
        outList.add(f.apply(s));
    }
    return outList;
}
publicstaticlist-transformedList(List-inList,函数f){
列表大纲列表=新的ArrayList();
for(TS:inList){
大纲图。添加(f.应用);
}
返回最长时间;
}

基本上表示一个类型,但在一个方法调用中在任何地方都必须相同。在同一方法调用中,不能使用一次作为整数,然后使用字符串

在这一行中:ListoutList=newarraylist()


是什么意思,因为它在同一调用中是整数和字符串。Java无法猜测;)

确切的消息是什么?用message更新了OP这可能会有帮助:@EJP这个问题可能是重复的,但被标记的问题是完全不同的。谢谢你,但是Intellij告诉我,当我复制你的代码进行测试时,
无法解析符号T
。@DarkLite1他引入了一个新的泛型,这是错误的。您想使用
T
的泛型类型。更新了他的答案。很抱歉,结果类型也必须声明。我更新了我的答案。Murat的编辑并不能解决您的问题,即您的输出类型并不总是与输入类型相同(前三个示例中的字符串,第四个示例中的整数)。谢谢您,Rudiger,必须将其更改为
public static List transformedList(List inList,Function f){
但现在它工作得很好。必须反复检查几次才能完全理解它。
Error:(13, 49) java: method transformedList in class cvo.ex2.ElementUtils cannot be applied to given types;
  required: java.util.List<T>,java.util.function.Function<T,T>
  found: java.util.List<java.lang.String>,String::length
  reason: inference variable T has incompatible bounds
    equality constraints: java.lang.String
    lower bounds: java.lang.Integer
public static <T,R> List<T> transformedList(List<T> inList, Function<T, R> f) {
    List<R> outList = new ArrayList<>();
    for (T s : inList) {
        outList.add(f.apply(s));
    }
    return outList;
}