java - Java의 Null 참조

기사 출처 java

메모리 할당 방법을 알아야하는 코드가 있습니다.

public class Demo {

public void checkNullReference(){
    ConsumerName name =  null;
    addReference(name);
    System.out.println(name.getConsumerName());
}

public void addReference(ConsumerName name){
    name = new ConsumerName();
    name.setConsumerName("KRISHNA");
}

public static void main(String []args){
    Demo demo = new Demo();
    demo.checkNullReference();
}
}


코드는 null 포인터 예외를 제공하고 있습니다. 객체의 굴절을 메소드에 부여했으며 거기에 새 객체를 할당하고 메소드를 다시 작성하면 모든 것이 예상대로 작동합니다.

public void checkNullReference(){
    ConsumerName name =  new ConsumerName();
    addReference(name);
    System.out.println(name.getConsumerName());
}
호출 된 메서드에서 호출 메서드의 참조를 변경할 수 없습니다. 따라서이 코드는 다음과 같습니다.

public void checkNullReference(){
    ConsumerName name =  null;
    addReference(name);
    System.out.println(name.getConsumerName());
}


name가 공식적인 인수로 무엇을하는지에 관계없이 null를 호출 한 후에도 addReference(name)는 여전히 addReference입니다.

addReference의 인스턴스를 반환하도록 ConsumerName를 다시 디자인 할 수 있습니다. 당신이 그것에있는 동안 인수는 무시되기 때문에 삭제할 수 있습니다. 결과는 다음과 같습니다.

public void checkNullReference(){
    ConsumerName name =  addReference();
    System.out.println(name.getConsumerName());
}

public ConsumerName addReference(){
    ConsumerName name = new ConsumerName();
    name.setConsumerName("KRISHNA");
    return name;
}

이 질문에 대해 Stack Overflow에서 비슷한 토론을 찾았습니다: https://stackoverflow.com/questions/14017461/

관련 기사
java - 유형이 정의되지 않은 Java 매개 변수
java - 2D 손전등 효과를 어떻게 렌더링해야합니까?
java - 날짜 시간을 JAVA 날짜로 구문 분석
java - XQuery에서 배열을 사용하거나 구현하는 방법은 무엇입니까?
java - 인스턴스 변수의 이름이 인수 변수와 같을 때 호출
java - 객체 배열의 모든 조합
java - Java의 arraylist에 대용량 파일을로드하는 가장 좋은 방법
java - 배포 (게시) 후 Weblogic 오류 : 오류 503-- 서비스를 사용할 수 없음
java - "리소스로 시도"에 문제가 있음
java - Java 인터페이스에 대한 Java 특성 파일 바인딩