このコードがコンパイルされない理由を理解できません:
package Desktop;
import java.util.function.*;
public class MyClass {
public static <T, U> Long myMethod( Function<T, U> methodParam ) {
return methodParam.apply("Today is happy day!");
}
public static void main(String[] args) {
System.out.println( <String, Long>myMethod( Long::valueOf ) );
}
}
だから私はこれをコンソールで受け取ります:
..\Desktop\MyClass.java:15: error: illegal start of expression
System.out.println( <String, Long>myMethod( Long::valueOf ) );
^
..\Desktop\MyClass.java:15: error: ';' expected
System.out.println( <String, Long>myMethod( Long::valueOf ) );
^
2 errors
ジェネリックを使用して、メソッドパラメーターのラムダの型を含めることを期待しています。
そのはず:
public static <T, U> U myMethod(Function<T, U> methodParam, T t) {
return methodParam.apply(t);
}
public static void main(String[] args) {
System.out.println(myMethod(Long::valueOf, "Today is happy day!") );
}
myMethod
はFunction
ジェネリックパラメーターを使用してを受け入れるため、常に引数を指定apply
してそのメソッドを呼び出し、String
それがを返すことを期待することはできませんLong
。
代わりに、String
引数を渡して、戻り値の型をに変更できますU
。
もちろん、このコードがスローされますNumberFormatException
、あなたがそれを変換することができないので、String
にLong
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加