2013-08-11 4 views
0

어떻게 든 다음 작업을 수행 할 수 있는지 알고 싶습니다.명시 적으로 Java의 메서드 매개 변수를 참조하십시오.

public void foo(int a) { 
    String a = Integer.toString(a); 
} 

분명히이 코드는 실제로 작동하지 않습니다. 문자열 a은 매개 변수 a을 음영 처리합니다. 제가 알고 싶습니다. 명시 적으로 컴파일러에게 "이봐,이게 실제로 다른 것 같아. a!" 메서드 매개 변수를 제외하고 this 키워드와 비슷한 것을 찾고 있습니다.

이와 같은 것이 있습니까? 아니면 다른 변수 이름을 사용해야합니까?

답변

4

아니요,이 기능은 java에는 없습니다. 다른 변수 이름을 만들어야합니다. 당신이 매개 변수와 동일한 변수 이름을 사용할 수있는 경우에도

1

당신은 혼란을 만들 것

String ab = Integer.toString(a); 

을, 뭐하고 수 있습니다. 자바에서는 그렇게 할 수 없습니다. 다른 변수 이름을 사용하십시오.

또한 메소드 매개 변수를 수정하는 것은 좋지 않습니다. 오히려 그들 당신은 그렇게 할 수 있지만이 방법

public void foo(int a) { 
    foo(Integer.toString(a)); 
} 

public void foo(String a) { 
//  
} 
+0

'최종'메소드 매개 변수에 +1. –

+0

그러나 내 코드에서 메서드 매개 변수를 수정하지는 않습니다! – Marconius

0

을 선언합니다. 예 :

public void foo(int a1) { 
    String a = Integer.toString(a1); 
} 
0

과부하 수를 들어 당신이 원하는 무엇을, 당신은 아마 또 다른 변수를 생성해야 최종 같은 -

public void foo(final int a) { 
    String ab = Integer.toString(a); 
} 
0

동일한 범위의 변수의 이름이 두 번일 수 없습니다. 하지만 당신은 예를 들어, 변수의 이름, 필드를 재정의 할 수

이제
class A 
{ 
    int a; 
    void f(int a) 
    { 
     this.a = a; 
    } 
} 

필드 A를 무시하고 this 당신이 오버라이드 (override) 필드를 참조 할 수 있습니다 사용하고 있습니다.

관련 문제