Reflection 动态访问修饰符

Reflection 动态访问修饰符,reflection,programming-languages,Reflection,Programming Languages,是否有任何语言允许在运行时更改给定成员的访问修饰符 例如,根据使用对象的上下文隐藏/显示信息。大多数语言都可以这样做,但通常会带来性能损失。例如,您可以使用以下命令更改Java中私有构造函数的可访问性 Constructor constructor = MyClass.class.getDeclaredConstructor(paramTypes); constructor.setAccessible(true); MyClass instance = (MyClass)constructor.

是否有任何语言允许在运行时更改给定成员的访问修饰符


例如,根据使用对象的上下文隐藏/显示信息。

大多数语言都可以这样做,但通常会带来性能损失。例如,您可以使用以下命令更改Java中私有构造函数的可访问性

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

看看你最喜欢的语言中类对象上可用的方法,你会看到很多方法来获取方法或字段,一旦你掌握了这些方法的句柄,你可以随心所欲地滥用它们。

我知道这个解决方案,但它只允许访问私有字段,这些字段仍然是私有的,不允许将任何成员的访问说明符从public切换到private,反之亦然。