2012-12-15 2 views
1

,의는 Generic<T>을 가정 해 봅시다이 포함되어 있습니다javac이 같은 클래스의 심볼을 찾을 수없는 이유는 무엇입니까? 클래스는 일반적이기

private int count; 
public int Count() 
{ 
    return count; 
} 

그것은 컴파일러 오류가 발생하는 방법이있다. 그것은이 라인에 기호 Count() (또는 count) 클래스 Generic<capture#940 of ? extends T> 및 포인트를 찾을 수 없습니다 : 왜 심볼이 other

public void set(Generic<? extends T> other) 
{ 
    int something = other.Count(); 
    int somethingElse = other.count; 
    //actions 
} 

발견되지 않는 이유는 무엇입니까? 나는 그것을 거기에 넣었다. 또한이 질문에 태그를 지정하는 방법에 대한 모든 정보를 제공합니다. 패키지 범위, 클래스 호출, 서브 클래 싱, 위임, 네임 스페이스 등과 같은 질문과 구별하는 방법을 알 수 없습니다. 그리고 아무도 '찾을 수 없습니다 - 기호'를 사용했습니다.

+0

개인 필드로 이동하려면 공용 접근 메서드를 사용해야합니다. 귀하의 클래스가 일반적인 이유는 무엇입니까? –

+0

개인 필드에 액세스 할 필요가 없습니다. 현재 count() 호출만으로 컴파일 중입니다. 클래스는 일반 객체를 모델링하기 때문에 일반 클래스입니다. 그것은 내가 여기에 두었던 것 이상을 포함합니다. 그러나 비공식적 인 수업은 주목할 것이므로 개인 필드에도 액세스 할 수 있어야합니다. – JasonDAquila

+0

이전의 코멘트가 잘못 전달되었을 수 있습니다. 성공적으로 컴파일 중입니다. 나는 컴파일러 오류를 얻으려는 중이다. 왜 count() 메서드를 찾을 수 없습니까? 이 클래스와 다른 타입이 아닌가? – JasonDAquila

답변

1

이것은 대답이 아닌 확장 된 주석입니다.

다음 프로그램은 이클립스에서 오류없이 컴파일 :

public class Generic<T> { 
    private int count; 
    public int Count() 
    { 
    return count; 
    } 
    public void set(Generic<? extends T> other) 
    { 
    int something = other.Count(); 
    int somethingElse = other.count; 
    } 
} 

정보를 추가하십시오. 내 프로그램이 사용자 환경에서 컴파일되지 않으면 컴파일에 대한 정보를 게시해야합니다. 내 프로그램이 컴파일러를 수행하는 경우 문제를 재현하는 Short, Self Contained, Correct, Example을 게시 할 수 있습니다.

+0

@ Bhesh Gurung 꺾쇠를 어딘가에 놓치 셨습니다. 컴파일러는 파서가 실제로 잃어버린 곳이 아닌 곳을 가리키며 혼란 스럽다. Patricia, Zagrev 고맙습니다. 필드 인 other.count를 성공적으로 참조하는 예제를 보여주고 싶지만, 최대 문자가 너무 작습니다. – JasonDAquila

+0

컴파일러는 지금까지 처리 한 코드가 구문 적으로 올바른 프로그램의 접두사 인 경우에도 해당 프로그램이 사용자가 의도 한 것과 아무 관련이 없더라도 구문 분석을 계속합니다. 누락 된 구두점은 프로그래머의 의도와 컴파일러의 관점이 일치하지 않는 경향이 있습니다. 오류가 이해가되지 않으면 표시된 위치에서 ** 실수로 ** 뒤를보십시오. 구문 강조 표시를 사용하여 IDE에서 코드를보고 다시 포맷하면 실제 문제가 발생할 수 있습니다. –

관련 문제