以前のJava1.4コードを1.5でコンパイルしようとすると、このジェネリックスのバインドの不一致の問題が発生しました。コードを以下に示します
try {
ArrayList simplePrincipals = new ArrayList(
((java.util.Collection) (subject.getPrincipals(Class
.forName("com.efunds.security.jaas.SimplePrincipal")))));
if (simplePrincipals.size() > 0) {
((SimplePrincipal) simplePrincipals.get(0))
.setPermissions(webPerm);
}
}
エラーは:
バインドの不一致:Subject型のジェネリックメソッド
getPrincipals(Class<T>)
は、引数には適用できません(Class<capture#1- of ?>)
。推論された型capture#1-of ?
は、制限されたパラメーターの有効な代替ではありません<T extends Principal>