2016-09-09 1 views

답변

0

속성이 public 일 때 다음과 같이 액세스 할 수 있습니다. 특성이 protected 인 경우 클래스는 클래스와 동일한 패키지에 있어야합니다.

obj.value = newValue; 

그것이 private 당신은 refelction에 의해 그것을 할 수 있습니다. 필드가 public 경우

m_name = value; 

을하고 :

+0

이 모든 것이 사실이 아니라고 생각합니다. 다른 범위에서도 그렇게 할 수 있습니다. 그러나 값을 설정하는 위치는 클래스 메서드 또는 기타에 따라 다릅니다. – Mikel

+0

감사합니다. 업데이트했습니다. – Huntro

3
당신이 방법 안에, 같은에서, 클래스 자체에, 변수는, private public을 표시하는 경우

, 또는 protected 다음, 이것을 사용 다음 수행 클래스 외부 액세스를 필요로 : 물론

classinstance.m_name = value; 

당신이 클래스의 인스턴스에 건설되는 변수를 필요로하는 경우에, 당신은 생성자의 목록을 인스턴스화 코드를 삽입해야합니다. 그럼 다시, 당신은 다음과 같은 반사를 사용할 수 있습니다 : 그것은 확실히 캡슐을 나누기 때문에

import java.lang.reflect.Field; 
ClassName classInstance = new ClassName(); 
Field member_name = classInstance.getClass().getDeclaredField("private_var_name"); 

// this is for private scope 
member_name.setAccessible(true); 

variableName.set(x, /*value*/); 

은 물론, 나는 위의 일을하지 않는 것이 좋습니다, 그것은 더 깨끗한 코드보다 해킹과 같습니다

(Source)

관련 문제