以下は合法であり(つまり、コンパイルできます)、プレビュー機能が有効になっているJava 15で動作します(Eclipse 2020-09で)
public sealed interface Quantity<T> permits QuantityImpl { }
public record QuantityImpl<T extends Number>(T value) implements Quantity<T> { }
public class Play {
public static void main(String[] args) {
Quantity<Float> q = new QuantityImpl<>(3.0f);
System.out.println(q instanceof Quantity);
}
}
ただし、日食はQuantity.java
at で不平を言ってい... permits QuantityImpl
ます。カーソルを合わせると、次のように表示されQuantityImpl
ます。
Permitted type QuantityImpl does not declare Quantity<T> as direct super interface
これは、コンパイルされたとしても、有効な苦情ですか、それとも日食のバグですか?