일반적인 추상 클래스 반환 형식 : 호출자바 나 자바 추상 클래스가 일치하지
public Importable importable;
// ...
importable = new MyImportable(); // MyImportable extends Importable<String>
이 작품 :
importData(validateData(myPaths));
나는이 작업을 수행 할 경우,
private abstract class Importable<T> {
// ...
public abstract List<T> validateData(List<Path> paths);
public abstract void importData(List<T> data);
// ...
}
private static class MyImportable extends Importable<String>{
public List<String> validateData(List<Path> paths){
return // valid ArrayList<String>;
}
public void importData(List<String> data){
// do stuff with data
}
}
지금 하지만 원시 Importable
을 좋아하지 않으므로 <?>
public Importable<?> importable;
오류가 발생합니다 : importData(validateData(myPaths));
을 실행
The method importData(List<capture#5-of ?>) in the type ImportController.Importable<capture#5-of ?> is not applicable for the arguments (List<capture#6-of ?>)
동안 일식이 문제
를 해결하기 위해 아무것도하지 않았다 List<?>
, 캐스팅하라고 제안 나는 '무언가가 실종 됐어?
편집 :
Importable importable;
switch(condition){
case 1:
importable= // Importable<MyType1>
break;
case 2:
importable= // Importable<MyType2>
// ....
}
importData(validateData(myPaths));
EDIT2 :
내가 분명하지 않다 경우가 여기에 다른 종류 가져올 수 확장 나는 많은 클래스가 될 실제 사용
미안 일부 다른 클래스가 validateData
importData
과
validateData
을 분리합니다. 10
문제 경우 : I 이클립스 4.3 자바 8/w 윈도우 7의 x64에 사용하고
명확하지가 어디 MyImportable의 정의의 사용? –
정의 추가 – tom91136
확장 가능 일반 기본 클래스를 사용하는 데 무의미한 것으로 보입니다. 즉시 사용 자의 문자열에 잠급니다. –