簡體   English   中英

JDK 15 密封類 - 如何跨包使用?

[英]JDK 15 Sealed Classes - how to use across packages?

我有一個簡單的密封類MyShape

public sealed class MyShape permits MyCircle {

    private final int width;
    private final int height;

    public MyShape(int width, int height) {
        this.width = width;
        this.height = height;
    }

    public int width() {
        return width;
    }

    public int height() {
        return height;
    }
}

還有一個簡單的子類MyCircle

public final class MyCircle extends MyShape {

    public MyCircle(int width) {
        super(width, width);
    }
}

當兩個類都在同一個包中時,一切都會編譯並運行。 如果我將 MyCircle 移動到一個子包中,那么構建會中斷: java: class is not allowed to extend sealed class: org.example.MyShape

我對JDK 15 文檔的理解是這應該有效。 我錯過了一步嗎?

如果您想進行實驗,我已經創建了一個 GitHub 存儲庫

如您鏈接的文檔中所述:

JDK 15 文檔

它們必須與密封類在同一個模塊中(如果密封類在命名模塊中)或在同一個包中(如果密封類在未命名模塊中)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM