<code_1>
// This is simple example.
<T>T test(String name) {
try {
InputStream in = new FileInputStream(name);
return (T) new ObjectInputStream(in).readObject();
}
catch (Exception e) {
}
return null;
}
}
<T>T text() {
return test("data");
}
</code_1>
But, javac(JDK5.0 Update 8) throws this error.
"type parameters of <T>T cannot be determined; no unique maximal
instance exists for type variable T with upper bounds T,java.lang.Object
return test("data");"
I think that javac is wrong because a duplicate code should be
written for removing this error. A duplicate code is not good
for maintenance.
What is your comment ?
Thanks.
I don't know the answer for sure, but after asking many questions about
generics, Eclipse and javac, the gurus here have told me that Eclipse is
usually "wrong" according to the JLS, even if Eclipse's behaviour is "more
useful" or "more intuitive". This isn't so surprising, as the organization
which writes javac is the same as the organization which writes the JLS.
- Oliver
Unfortunately, in this case Eclipse is right, according to the spec,
and javac is wrong.
This is a documented bug in javac; pls check:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6302954