簡體   English   中英

在不使用public的情況下訪問不同包中的受保護的類變量

[英]Access protected class variable in different package without using public

我的問題很難用語言來解釋,所以我只作簡要解釋,希望您理解我想說的話。 :)

我正在嘗試訪問位於同一項目的內部包中的類中的受保護的最終變量-即com.example.Main訪問com.example.package.SomeClass.thisVarHere 這是我正在做的事的一個例子:

package com.example;
import some.package.Here;
import another.package.Here;
static import com.example.package.InsideClass.statVar;

public class MainClass {
    public void someMethod() {
        System.out.println("Value of statVar is: " + statVar);
    }
}

和另一類:

package com.example.package;
import pa.cka.ge

public class InsideClass {
    protected static String statVar = "Test variable";
}

當我嘗試訪問statVar ,它告訴我,由於它已受到保護,所以我無法訪問它(正如我期望的那樣)。 但是我不希望它公開,以便其他任何人都可以訪問它。 此外,它必須是內包裝,所以內部類不會工作。 我什至有辦法做到這一點,還是我被迫將其設置為公開並希望沒有任何外部團體可以訪問它? 任何建議將不勝感激。 :) 謝謝!

由於您正在嘗試從另一個軟件包訪問它,所以我不這么認為。 Java中沒有辦法讓程序包P1的類說“這里是我希望程序包P2類可以訪問的變量,但沒有其他外部程序包”。 如果授予對一個外部程序包的訪問權限,則將授予對所有外部程序包的訪問權限。 也許您可以使用getter函數來完成此任務,該函數可以查看堆棧回溯以查看調用方所在的程序包,但這似乎有點過頭了。 答案可能是重新考慮設計。

暫無
暫無

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

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