클라이언트를 실행하고 값을 설정/가져 오기 필드에 액세스하려고합니다. 스크립트가 시작되면 URLClassLoader
으로로드 된 클라이언트 클래스의 새 인스턴스를 만들고 gameApplet
에 할당합니다.리플렉션이 적용된 NPE
이제 코드의 다음 조각 (정적 필드에 액세스) 잘 작동 :
Class<?> clientClass = clientClassLoader.loadClass("client");
fps = clientClass.getDeclaredField("fpsOn");
fps.setAccessible(true);
fps.set(null, true);
그러나이 후, '비 정적 필드에 액세스하려고 할 때 :
logged = clientClass.getField("loggedIn");
logged.set(gameApplet, true);
나는이 얻을를 오류
java.lang.NullPointerException
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(Unknown Source)
at sun.reflect.UnsafeBooleanFieldAccessorImpl.set(Unknown Source)
at java.lang.reflect.Field.set(Unknown Source)
at launch.run(launch.java:206)
at java.lang.Thread.run(Unknown Source)
나는 그것이 null 인 인스턴스라고 가정하지만, 정적 필드를 얻는 이유는 무엇입니까?
'OK'또는 'So'로 문장을 시작하지 마십시오. 만약 당신이 그러한 용어를 제거한다면, 문장은 모든 비트를 많은 의미로 만듭니다. –