public class Example { private static <T> T hoge(Object obj){ return (T) obj; } public static <T> T hage(Object obj){ return hoge(obj); } }
みたいな感じで書くとEclipseだとOKだけど、Maven(というかjavac)でコンパイルすると下のメソッドから上のメソッドの戻り値をreturnしているところでこんな感じで怒られます。
型パラメータ <T>T を判別できません; 型変数 T (上限 T,java.lang.Object) の固有の最大インスタンスが存在しません。
こんなときは慌てず騒がずこんな感じで。
public static <T> T hage(Object obj){ return Example.<T> hoge(obj); }
かっこ悪いけど素直にキャストするのもありかも。
public static <T> T hage(Object obj){ return (T) hoge(obj); }