그러나 f (object)를 f (String) 또는 f (Integer)로 변경하면 다음 코드는 컴파일되지 않습니다. 제목에 대한 다른 게시물을 읽었지만 컴파일러가 어떤 방법을 사용해야할지 모르겠다. (새 인스턴스 A a = new B();)재정의 된 메서드가 형식 매개 변수를 지정하지 못하는 이유는 무엇입니까?
public class SampleTester {
public static class A {
public void f(int x) { System.out.print("1"); }
public void f(Object x) { System.out.print("2"); }
}
public static class B extends A {
public <T> void f(T x) { System.out.print("3"); } //compiler error
}
public static void main(String[] args) {
A a = new A();
B b= new B();
a.f(3);
a.f("foo");
b.f(3);
b.f("foo");
}
}
나는 여전히 컴파일되지 않습니다 Object t
-T x
를 변경하는 경우, 그래서 차이점은 무엇입니까? 게다가, 왜 그것이 A의 함수를 오버라이드하지 않는가? .
public void f(int x)
public void f(Object x)
public <T> void f(T x)
문제가 있다는 것이다 (모두 클래스 B
따라서 A
연장
나는 왜이 질문이 내려 졌는지 확신하지 못한다. 그것은 IMO 꽤 좋은 질문 것 같습니다. – CKing
내가 downvote하지 않은 동안 분명한 질문은 "그럼 오류 메시지가 무엇입니까?" 어떤 것이 컴파일되지 않는다는 (또는 컴파일되지만 예외가 발생하는) 질문은 오류 세부 사항을 포함해야합니다. –