그래, 제네릭을 많이 사용한 적이 없으며 다음과 같은 방식으로 사용할 수 있는지 궁금합니다.Java generics 및 하위 클래스 정보
내가 그 위의 클래스를 확장 할 경우 그때 내가 문자열과 정수의 인수 목록과 함께 해봐요을 무시하도록 강요 될 것이다 다음을 것,
public class ASuperClass {
public abstract void doSomething(String arg1, Integer arg2);
}
그래서이 클래스가 있다고 가정 할 수 있습니다.
public class ASubClass extends ASuperClass{
@Override
public void doSomething(String arg1, Integer arg2){
some code.....
}
}
지금, 내 서브 클래스에서 내가 해봐요을 무시할 괜찮아요한다고 가정 할 수 있습니다,하지만 난 내 서브 클래스에서 추가 문자열 인수가 필요합니다. 그래서, 내가 뭘하고 싶은 다음이 있습니다 :
public class ASubClass extends ASuperClass{
@Override
public void doSomething(String arg1, Integer arg2, String arg3){
some code...
}
}
내 서브 클래스가베이스에 정의 된 추상적 인 서명을 구현하지 않기 때문에 위의하지만 컴파일되지 않습니다. 따라서 컴파일하려면 다음을 수행하십시오.
public class ASubClass extends ASuperClass{
@Override
public void doSomething(String arg1, Integer arg2){}
public void doSomething(String arg1, Integer areg2, String arg3){
here is my code......
}
}
그래서 정확히 내가하려고하는 것은 무엇입니까? 내가 관심있는 것은, arg의리스트에 관계없이 기본 추상 메소드를 구현하기 위해, generics를 arg로 사용하여 클래스의 서브 클래스를 강제로 "강제하는"방법이 있는지입니다. 그래야하여 ASuperClass을 확장 컴파일 할 다음 위의 두 클래스를 컴파일 할 수 있도록
public class ASubClass extends ASuperClass{
@Override
public void doSomething(String arg1, Integer areg2, String arg3){
here is my code......
}
}
public class AnotherSubClass extends ASuperClass{
@Override
public void doSomething(String arg1, Integer areg2, String arg3, Integer arg4){
here is my code......
}
}
그래서, 당신은 기본 클래스 인수 목록을 "일반 -이지는"할 수 있습니까? 아래처럼 뭔가? 나는 아래의 구문이 잘못되었음을 알고 있지만 arg 목록을 일반화 할 수 있습니까?
public class ASuperClass {
public abstract void doSomething(<?>);
}
전체적으로 내 생각은 사람들이 기본 기능을 확장하고있는 응용 프로그램에 일관성을 적용하는 것입니다. 기본적으로 ASuperClass의 모든 서브 클래스에는 doSomething() 멤버 함수가있어 서브 클래스간에 일관성 (특히 메서드 이름)을 보장하지만 arg 목록은 하위 클래스마다 다를 수 있습니다.
위의 내용을 혼동하지 않기를 바랍니다. 이것이 가능한지 알고 싶다.
간단히 말해서 불가능합니다. 그리고 제네릭도 사진으로 올 수 없습니다. 하위 클래스에는 두 가지 메소드가 있어야합니다. –