[英]Java sealed interface permits generic type: gradle complains, eclipse does not
我有三種類型, A
, B
和C
,定義如下:
public sealed interface A extends Comparable<A> permits B<?>, C { ...
public non-sealed interface B<T> extends A { ...
public record C(String s, int i) implements A { ...
一切都在 Eclipse 中編譯並正常工作。 現在,當我運行 gradle 構建時,我收到一個錯誤error: '{' expected
at the place of opening bracket at permits B<?>
。 當我刪除<?>
時,類型定義如下(原始類型):
public sealed interface A extends Comparable<A> permits B, C { ...
...然后 gradle 不會抱怨並且構建成功。 這是 gradle 錯誤還是我使用的類型定義不允許?
根據Java 語言規范§8.1.6 , permits
類型列表的項目必須沒有其類型參數。
因此, permits B<?>
不正確,必須更正為permits B
。
請確保permits B<?>
不會給出編譯錯誤,並且permits B<?>
確實給出B is a raw type. References to generic type B<T> should be parameterized
B is a raw type. References to generic type B<T> should be parameterized
警告,已報告給 Eclipse JDT 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.