2012-05-28 2 views
3

현재 javac 컴파일러를 수정하여 특정 방식으로 우리 고유의 프로그래밍 언어를 생성하려고합니다.컴파일시 Java 기본 수정 자

우리는 Java의 기본 액세스 수정자를 제거하여 액세스 수정자가없는 모든 항목을 public으로 만들고자합니다.

그러나 지금까지 자바 컴파일 코드가 구현 된 곳을 찾지 못했습니다. 나는 선언 단계 중 하나에 쉽게 추가 할 수 있지만, 이것은 우리가 갖고 싶어하지 않는 가난한 해결책이다.

이것에 대한 통찰력이 있으십니까?

+0

인터페이스의 경우 기본 수정자는 공개입니다. 내가 선호하는 것은 모든 것을 비공개로 만들거나 로컬 패키지로 만들 때 공개를 필요로하는 것을 사용하려고 할 때 IDE가 필드 나 메소드를 자동 수정으로 승격하게한다 (나는 소스에 액세스해야한다) –

+2

(질문해야합니다 : 왜 그런 식으로 언어를 변경하겠습니까?) –

+1

University에서 연구하기 – Adriano

답변

4

특히 섹션 The class File Format 찾고 4.5 필드4.6 방법 I는 다음의 상수를 정의되는 참조 : 클래스의 그러나

ACC_PUBLIC  0x0001 
ACC_PRIVATE 0x0002 
ACC_PROTECTED 0x0004 

특정 방법 (필드)을 수도 ACC_PRIVATE, ACC_PROTECTED 및 ACC_PUBLIC 플래그 중 하나만 설정해야합니다 (JLS §8.3.1).

이 더 ACC_DEFAULT 플래그가없고 문서 가장 한에 을 말한다 때문에 (하지 정확히 하나의) 나는 전혀 플래그가없는 것은 기본 액세스를 의미 생각합니다.

+0

그렇다면 실제 속성이 없다고 가정 할 수 있습니다. 이는 jvm에서만 처리됩니다. – Adriano

+0

@Adriano : 수정 자 *는'.class' 파일에 저장되고 JVM이이를 읽습니다. 나는 단지'ACC_'수정자가 디폴트 수식어를 의미한다고 추측한다. –