我无法找到一个正确的方法来获得一个Guava Optional的默认构造函数参数.以下代码不能使用Java 1.6进行编译
public class ShoppingCart implements Serializable {
private final Optional<DiscountCoupon> discountCoupon;
public ShoppingCart() {
this(Optional.absent());
}
public ShoppingCart(Optional<DiscountCoupon> dc) {
Preconditions.checkNotNull(dc);
if (dc.isPresent()) {
Preconditions.checkArgument(dc.get().getPennyDiscount() != 0 ||
dc.get().getPercentDiscount() != 0);
}
discountCoupon = dc;
}
Run Code Online (Sandbox Code Playgroud)
报告的错误是:
/Users/pfarrell/sandbox//com/wayfinderdigital/struct/ShoppingCart.java:29: cannot find symbol
symbol : constructor ShoppingCart(com.google.common.base.Optional<java.lang.Object>)
location: class com.wayfinderdigital.struct.ShoppingCart
this(Optional.absent());
Run Code Online (Sandbox Code Playgroud)
Java无法从您编写的代码中自动推断出泛型.相反,使用
public ShoppingCart() {
this(Optional.<DiscountCoupon>absent());
}
Run Code Online (Sandbox Code Playgroud)
(虽然我不得不问 - 你确定这Optional在这里真的合适吗?)