2013-02-23 3 views
2

가능 :ABAP에서 반사에 의한 캡슐화를 위반할 수 있습니까?

  • 개인 회원 변수의 내용을 읽고 수정 하시겠습니까?
  • 사적인 방법으로 연락 하시겠습니까?

.. 이들이 범위에없는 문맥으로부터?

이와 같은 아키텍처를 계획하지 않고 가능한지 알고 싶습니다.

+0

더 많은 "위험한"질문을하기 시작했습니다. :-) – vwegert

+0

그들은 OOP : P의 교회에서 나를 추방 할 것입니다. 그러나 srsly, 나는 더러운 버그를 찾아야했습니다. 문제가있는 곳을 확인하고, 10 개 인터페이스를 구현하는 것보다 디버거에서 일부 개인 멤버 변수의 내용을 수정할 수 있으면 작업량이 적을 것입니다. 디버깅에 대한 다른 견해가 있다면 공유하십시오. –

+0

적절한 권한 (개체 S_DEVELOP 활동 02) – CaptainProton

답변

1

디버거가 ABAP로 작성되고 디버거가 비공개 멤버의 내용을 표시 할 수 있기 때문에 디버거가 비공개 멤버의 내용을 표시 할 수 있습니다 (쉬운 방법이 아닌 경우 분명히 위험한 저급 요소를 사용해야합니다.). 개인용 메서드를 호출하는 경우 확실하지는 않지만 가능한 일인지 의심 스럽습니다.

+0

이있는 경우 디버그 모드에서 변수를 변경할 수 있지만 디버거가 다른 프로세스에서 실행 중이며 디버그 권한이 필요합니다. 나는이 접근법이 OP가 요구 한 것이 아니라고 생각합니다. 실제로 VM에서 실행할 수있는 모든 종류의 시스템에 대해 내부에서 내부를 관찰 할 수 있습니다. 이는 항상 모든 캡슐화 장벽을 무너 뜨립니다. –

+0

디버거가 외부에 없습니다. JVM 디버거가 ABAP 디버거가 아닐 수 있습니다. "루프백"으로 작동하는 일부 커널 기능에만 액세스합니다. – vwegert

+0

실제로 두 개의 디버거가 있습니다. "오래된"은 안에 있고, "새로운"은 밖에 있습니다. –

2

ABAP는 해석 된 언어입니다. 따라서 통역사는 언제든지 무엇이든 알고 있습니다. 리플렉션 (RTTI/RTTC) 및/또는 동적 호출을 사용하더라도 범위에서 개인 멤버에 액세스 할 수 없습니다.

그러나 친구를 신고 한 경우 친구는 물론 개인 회원에 액세스 할 수 있습니다.

관련 문제