2011-07-29 150 views
1

是否有任何語言允許在運行時更改給定成員的訪問修飾符?動態訪問修飾符

例如,根據使用對象的上下文隱藏/顯示信息。

回答

0

大多數語言都可以做到這一點,但它往往伴隨着性能損失。例如,您可以使用以下方法更改Java中的私有構造函數的可訪問性。

Constructor constructor = MyClass.class.getDeclaredConstructor(paramTypes); 
constructor.setAccessible(true); 
MyClass instance = (MyClass)constructor.newInstance(params); 

看看你喜歡的語言類對象上可用的方法,你會看到許多的方式來獲得在方法或屬性,一旦你對那些把手,可以將它們濫用,以你心中的內容。

+0

我知道這個解決方案,但它只允許訪問私有字段(它們仍然是私有的),並且不允許將任何成員的訪問說明符從公共私有轉換爲私有和/或反之亦然。 – anonymvs