仅用于演示目的的代码。
这不编译:
rendering
这会编译:
public static void main(String[] args) {
final List<Optional<Dog>> dogs = Arrays.stream(new String[]{"a", "b"})
.map((code) -> {
try {
return Optional.of(new Dog());
} catch (RuntimeException e) {
return Optional.empty();
}
})
.collect(Collectors.toList());
}
class Dog{}
有没有其他方法可以告诉Java第一个示例中public static void main(String[] args) {
final List<Optional<Dog>> dogs = Arrays.stream(new String[]{"a", "b"})
.map((code) -> getDog(code))
.collect(Collectors.toList());
}
private static Optional<Dog> getDog(String code) {
try {
return Optional.of(new Dog());
} catch (RuntimeException e) {
return Optional.empty();
}
}
class Dog{}
的类型是Optional.empty()
类型?
答案 0 :(得分:3)
有没有其他方法可以告诉Java第一个示例中
Optional.empty()
的类型是Optional<Dog>
类型?
Optional.<Dog>empty()
使用模板参数调用静态方法时,可以使用上述语法明确指定参数。
它显示在The Java™ Tutorials页面上:
public class Util { public static <K, V> boolean compare(Pair<K, V> p1, Pair<K, V> p2) { return p1.getKey().equals(p2.getKey()) && p1.getValue().equals(p2.getValue()); } }
调用此方法的完整语法为:
Pair<Integer, String> p1 = new Pair<>(1, "apple"); Pair<Integer, String> p2 = new Pair<>(2, "pear"); boolean same = Util.<Integer, String>compare(p1, p2);