Java에서는 비정적 필드에 대한 정적 참조가 오류의 원인이 될 수 있습니다. 이 문제를 이해하고 해결하기 위해 구체적인 예를 살펴보겠습니다.
다음 코드를 고려하세요.
<code class="java">public class Account { private int id = 0; private double balance = 0; public static void main(String[] args) { Account account = new Account(1122, 20000); account.withdraw(balance, 2500); } public void withdraw(double withdrawAmount) { balance -= withdrawAmount; } }</code>
이 코드를 컴파일하려고 하면 다음 오류가 발생합니다.
Cannot make a static reference to the non-static field balance
이 오류는 철회 메소드가 정적으로 선언되었기 때문에 발생합니다. 즉, 객체 인스턴스 없이 클래스에서 직접 호출할 수 있습니다. 그러나 잔액 필드는 비정적이므로 객체 인스턴스를 통해서만 액세스할 수 있습니다.
이 오류를 수정하려면 철회 메서드를 수정하여 정적 선언을 제거해야 합니다.
<code class="java">public void withdraw(double withdrawAmount) { balance -= withdrawAmount; }</code>
또는 균형 필드를 정적으로 만들어 객체 인스턴스 없이 액세스할 수 있습니다. 그러나 이는 클래스의 모든 인스턴스 간에 공유된 변경 가능 상태로 이어질 수 있으므로 항상 바람직하지는 않습니다.
이러한 원칙을 따르면 이러한 오류를 방지하고 코드가 Java의 정적 및 비- 정적 필드 사용 지침
위 내용은 비정적 필드에 대한 정적 참조를 만들 때 Java에서 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!