2014-03-27 2 views
0

다른 "Java 일반 방법을 사용할 수 없습니다."라는 질문에 사과드립니다.Java Generics 오류 : 인수에 해당하지 않습니다. <T>

문제 코드 :하지만 아무도 대답은 내 문제를 해결할 수

public final class Native<T> { 

    private void test1(Ref ref, Integer key) { 

    } 

    final class Ref { 
     private final Native factory; 

     private Ref(Native factory) { 
      this.factory = factory; 
     } 

     public void test2() { 
      factory.test1(this, 1); 
     } 
    } 
} 

오류 :

유형의 기본에있어서, test1(Native.Ref, Integer)가 인수 적용되지 않습니다 (Native<T>.Ref, int)

이런 공장을 지우면 :

public void test2() { 
     test1(this, 1); 
    } 

그렇다면 작동하지만 왜 그런지 모르겠습니까? 미리 감사드립니다. 그것은 일반적인하지 것처럼

+0

작업중인 공장과 작동하지 않는 공장간에 차이점이 없습니다. –

+0

어디에서나'T'가 사용되지 않을 때'네이티브'가 일반적인 이유는 무엇입니까? 'Ref'가'Native' 인스턴스에 대한 참조를 가진 내부 클래스 인 이유는 무엇입니까? 'Ref'의'Native' 인스턴스가 타입 인자를 빠뜨리는 이유는 무엇입니까? –

+0

BTW, 귀하의 코드를 잘 컴파일합니다. 당신이 준 오류 메시지가 현재 코드에 오지 않아야합니다. –

답변

4

변경

private final Native factory; 
private Ref(Native factory) { 

private final Native<T> factory; 
private Ref(Native<T> factory) { 

에 당신은 제네릭 형식을 사용해서는 안됩니다.