다음 예제에서는 반환 유형 List<? extends IConfigUser>
을 List<ConfigUser>
으로 대체 할 수 있습니까? getUserList()
에 있는데도 setUserList()
매개 변수에 대해 동일하게 처리 할 수 없습니까?이 클래스가 매개 변수로 수퍼 유형으로 간주되지 않는 이유는 무엇입니까?
이 경우 IConfigUser
의 ConfigUser
이 슈퍼 유형으로 간주되지 않습니까?
public class Test {
public interface IConfigUser {
}
public interface IConfig {
public List<? extends IConfigUser> getUserList();
public void setUserList(List<? extends IConfigUser> list);
}
public class ConfigUser implements IConfigUser {
}
// The type Test.Config must implement the inherited abstract method
// Test.IConfig.setUserList(List<? extends Test.IConfigUser>)
public class Config implements IConfig {
@Override
public List<ConfigUser> getUserList() {
return null;
}
// The method setUserList(List<ConfigUser> list) of type Test.Config
// must override or implement a supertype method
@Override
public void setUserList(List<ConfigUser> list)
{
}
}
}
* 컴파일 한 다음 List에 누군가 전달한 경우를 상상해보십시오. –