Error Log: type parameters of<br>T cannot be determined; no unique maximal instance exists for ...

775 ワード

テスト環境Mavenコンパイル時に次のエラーを報告します.
type parameters of <T>T cannot be determined; no unique maximal instance exists for type variable T with upper bounds int,java.lang.Object

開発環境は正常にコンパイルされ、コードを調べました.
public <T> T selectOne(String statement);

public int countXXX() {
	...
	return selectOne("YYY");
}

countXXX()の戻りタイプintがselectOneの戻りタイプ定義と一致しないことが分かった.
ネット上には「Javaバージョンのアップグレード」というソリューションがあります.しかし、このようなコードは厳密ではありません.nullが現れると、必ずエラーが発生します.
私の解決策はコードを修正し、できるだけ異常を報告しないことです.
public int countXXX() {
	...
	Integer count = selectOne("YYY");
	return count == null ? -1 : count.intValue();
}
またcountXXX()の戻りタイプintをIntegerに変更することもできます.