相关疑难解决方法(0)

如何将setAccessible限制为仅仅"合法"使用?

我越了解它的力量java.lang.reflect.AccessibleObject.setAccessible,我就越能对它做什么感到惊讶.这是根据我对问题的回答改编的(使用反射来更改静态最终File.separatorChar以进行单元测试).

import java.lang.reflect.*;

public class EverythingIsTrue {
   static void setFinalStatic(Field field, Object newValue) throws Exception {
      field.setAccessible(true);

      Field modifiersField = Field.class.getDeclaredField("modifiers");
      modifiersField.setAccessible(true);
      modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);

      field.set(null, newValue);
   }
   public static void main(String args[]) throws Exception {      
      setFinalStatic(Boolean.class.getField("FALSE"), true);

      System.out.format("Everything is %s", false); // "Everything is true"
   }
}
Run Code Online (Sandbox Code Playgroud)

你可以做真正令人发指的事情:

public class UltimateAnswerToEverything {
   static Integer[] ultimateAnswer() {
      Integer[] ret = new Integer[256];
      java.util.Arrays.fill(ret, 42);
      return ret;
   }   
   public static void main(String args[]) throws Exception { …
Run Code Online (Sandbox Code Playgroud)

java security reflection

97
推荐指数
3
解决办法
2万
查看次数

JAVA获取类中的实例名称?

假设我有以下课程:

public class System {

  private String property1;
  private String property2;
  private String property3;

  public void showProperties {
      System.out.println("Displaying properties for instance "+<INSTANCE NAME>+"of object System:"
                         "\nProperty#1: " + property1 +
                         "\nProperty#2: " + property2 +
                         "\nProperty#3: " + property3);
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来获取将调用方法showProperties的System-instance的名称,以便在编写时:

System dieselEngine= new System();
mClass.property1 = "robust";
mClass.property2 = "viable";
mClass.property3 = "affordable";
dieselEngine.showProperties();
Run Code Online (Sandbox Code Playgroud)

控制台输出将是:

显示 对象'System'的例子dieselEngine 的属性:

财产#1:强大

财产#2:可行

物业#3:价格实惠

java instance

3
推荐指数
1
解决办法
6984
查看次数

如何在类中找到方法的数量

我想创建一个程序,它将另一个Java程序作为输入,并且应该返回类中的方法数以及属性数.

java reflection

1
推荐指数
1
解决办法
221
查看次数

标签 统计

java ×3

reflection ×2

instance ×1

security ×1