need hlp
Read the Java Tutorials for the basic rules of the language. Statements belong inside methods, and a standalone declaration inside 'main()' doesn't help anything. Try a simpler example until you get used to it.
X-Hamster-Info: Score=0 ScoreLoad=0 ScoreSave=0 Received 150317221155
Xref: localhost comp.lang.java.programmer:51612
Path: news.ett.com.ua!news2.arglkargh.de!news.swapon.de!eternal-september.org!feeder.eternal-september.org!mx02.eternal-september.org!.POSTED!not-for-mail
From: Steven Simpson <ss@domain.invalid>
Newsgroups: comp.lang.java.programmer
Subject: Re: Dynamic proxy causes downstream code to not find annotations.
How to solve?
Date: Tue, 17 Mar 2015 14:24:24 +0000
Organization: A noiseless patient Spider
Lines: 59
Message-ID: <o1qltb-jt8.ln1@s.simpson148.btinternet.com>
References: <9a31318b-4de7-42cb-9d29-202a973ae557@googlegroups.com> <4f429c73-7025-44e2-aadb-f971fbeba006@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Info: mx02.eternal-september.org; posting-host="4972994621fb3afe08c00cbb5b80c57b";
logging-data="28757"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19LtAVEOH/2hR1WpYcgB/dicIfmjyoi1ew="
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0
In-Reply-To: <4f429c73-7025-44e2-aadb-f971fbeba006@googlegroups.com>
Cancel-Lock: sha1:0BckQqmCRGlneNyIxuBrWvkf8Z4=
X-Old-Xref: news.ett.com.ua comp.lang.java.programmer:96635
On 16/03/15 14:44, rupertlssmith@googlemail.com wrote:
class Test implements ITest<Integer> {
public Integer someMethod() {
return 1;
}
}
interface ITest<T> {
T someMethod();
}
And got this output:
public java.lang.Integer org.mygovscot.stars.client.Test.someMethod()
public java.lang.Object org.mygovscot.stars.client.Test.someMethod()
(... other methods on Object)
(I'm confused about your problem now, because I thought you didn't have
anything explicitly implementing your interface...)
In the invocation handler, can you not look up the method on your target
object? The simple way would be:
obj.getClass().getMethod(method.getName(), method.getParameterTypes())
However, it might not find a method if your interface declares:
void myMethod(String s);
....while the class declares:
void myMethod(T s); // in MyClass<T>
....and the instance is a MyClass<String>.
So, more generally, can you do your own look-up along these lines?:
private static Method findMethod(Class<?> clazz,
String name, Class<?>[] types)
throws NoSuchMethodException {
next_method:
for (Method meth : clazz.getMethods()) {
if (!meth.getName().equals(name)) continue;
if (meth.getParameterCount() != types.length) continue;
Class<?>[] params = meth.getParameterTypes();
for (int i = 0; i < types.length; i++) {
if (!params[i].isAssignableFrom(types[i]))
continue next_method;
}
return meth;
}
throw new NoSuchMethodException();
}
--
ss at comp dot lancs dot ac dot uk