본문 바로가기
Error(Exception)/ERROR-JAVA

[자바(java)] IllegalAccessException

by control+c 2023. 2. 18.
반응형

IllegalAccessException 예외 예제

Java에서는 IllegalAccessException이라는 런타임 예외가 있습니다. 이 예외는 클래스, 메소드, 필드 등의 접근을 제한하여 언제든지 발생할 수 있습니다. IllegalAccessException은 Java의 접근 권한 시스템의 불일치로 인해 발생합니다.

IllegalAccessException 예제

다음은 IllegalAccessException 예제를 보여줍니다.

public class MyClass {
  private int myField = 0;
  public void setMyField(int value) {
    myField = value;
  }
  public int getMyField() {
    return myField;
  }
}

public class MyOtherClass {
  public static void main(String[] args) {
    MyClass myClass = new MyClass();
    myClass.myField = 10; // 에러: IllegalAccessException 발생
  }
}

위 코드에서 MyOtherClassMyClassmyField을 직접 접근하고 있습니다. 하지만 MyClass에서 선언한 myFieldprivate 접근 제한자로 선언되어 있습니다. 따라서 MyClass의 필드를 다른 클래스에서 접근하는 것이 불가능합니다. 따라서 위 예제에서는 IllegalAccessException 예외가 발생합니다.

IllegalAccessException 해결 방법

IllegalAccessException은 자바의 접근 권한 시스템의 불일치로 인해 발생합니다. 해결하기 위해서는 접근 권한 시스템을 맞추고 접근 권한을 열면 됩니다.

예를 들어 위 예제에서는 MyOtherClass에서 MyClassmyField를 접근하려고 하고 있습니다. 이 때 MyClassmyFieldpublic 접근 제한자로 변경하면 MyOtherClass에서도 접근할 수 있게 됩니다.

public class MyClass {
  public int myField = 0; // public 접근 제한자로 변경
  public void setMyField(int value) {
    myField = value;
  }
  public int getMyField() {
    return myField;
  }
}

코멘트

IllegalAccessException은 클래스, 메소드, 필드 등의 접근을 제한하여 언제든지 발생할 수 있는 런타임 예외입니다. 해결하기 위해서는 접근 권한 시스템을 맞추고 접근 권한을 열면 됩니다.

반응형

댓글