第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

無法實(shí)現(xiàn)的Java可見界面

無法實(shí)現(xiàn)的Java可見界面

繁花如伊 2022-11-02 15:41:17
我正在開發(fā)一種可以編譯為 JVM 字節(jié)碼的編程語言,它高度依賴接口作為類型。我需要一些方法來使接口私有,但讓其他代碼仍然能夠訪問它,但不能實(shí)現(xiàn)它。我正在考慮使用帶有私有構(gòu)造函數(shù)的抽象類,因此只有同一文件中的類才能訪問它。唯一的問題是一次擴(kuò)展多個(gè)抽象類是不可能的。例如,一個(gè)簡單的編譯程序的結(jié)構(gòu)是這樣的:// -> Main.javapublic class Main {    public static MyInteger getMyInteger() {        return new MyIntegerImpl(10);    }    public static void main(String[] args) {}    private interface MyInteger {        public int getValue();    }    private static class MyIntegerImpl implements MyInteger {        private final int value;        public int getValue() {            return value;        }        public MyIntegerImpl(int value) {            this.value = value;        }    }}還有另一個(gè)文件,其中存在問題:// -> OtherFile.javapublic class OtherFile {    public static void main(String[] args) {        Main.MyInteger myInteger = Main.getMyInteger(); //Error: The type Main.MyInteger is not visible.        System.out.println(myInteger.getValue());    }    //I do not want this to be allowed    public static class sneakyInteger implements Main.MyInteger { //Error(Which is good)        public int getValue() {            System.out.println("Person accessed value");            return 10;        }    }}我想這樣做的原因是,一個(gè)人不能通過提供自己的實(shí)現(xiàn)來搞亂任何其他人的代碼,而這些實(shí)現(xiàn)應(yīng)該只能由其他人實(shí)現(xiàn)。任何幫助將非常感激。
查看完整描述

1 回答

?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

我很確定您應(yīng)該再次考慮您要做什么并更改方法,但是您問題的答案是向接口添加一些空void方法,該方法正在獲取特定于包裝器類的內(nèi)部private類的參數(shù)


public class Test {

    private class InnerPrivateClass {

        private InnerPrivateClass() {}

    }


    public interface MyInteger {

        int getValue();


        void accept(InnerPrivateClass c);

    }


    private class MyIntegerImpl implements MyInteger {

        @Override

        public int getValue() {

            return 0;

        }


        @Override

        public void accept(InnerPrivateClass c) {}

    }

}

但是,正如我所說,我不喜歡這樣,對我來說,這意味著你的想法被打破了


查看完整回答
反對 回復(fù) 2022-11-02
  • 1 回答
  • 0 關(guān)注
  • 88 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號