Witajcie, oto mój kod:
package pl.pat;
interface I {
int f(int i);
void g();
}
package pl.pat;
public class Implementacja1 {
public int kwadrat(int i) {
return i*i;
}
public void halo() {
System.out.println("Halo !!!");
}
}
package pl.pat;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class UniwersalnyAdapter implements I {
private Object implementacja;
private Method metodaF, metodaG;
public UniwersalnyAdapter(Object impl, String f, String g) {
implementacja = impl;
try {
metodaF = implementacja.getClass().getMethod(f, new Class[] {int.class});
metodaG = implementacja.getClass().getMethod(g, new Class[] {});
} catch(NoSuchMethodException e) {
System.out.println(e);
}
}
public int f(int i) {
try {
Object o = metodaF.invoke(implementacja, new Object[] {new Integer(i)});
return 234;
} catch(Exception e) {
System.out.println(e);
return 123;
}
}
public void g() {
try {
metodaG.invoke(implementacja, new Object[] {});
} catch(IllegalAccessException e) {
System.out.println(e);
} catch(InvocationTargetException e) {
System.out.println(e);
}
}
}
package pl.pat;
public class test {
public static void main(String[] args) {
I i = new UniwersalnyAdapter(new Implementacja1(), "kwadrat", "halo");
i.g();
System.out.println(i.f(12));
}
}
Mam problem z tymi linijkami kodu:
Object o = metodaF.invoke(implementacja, new Object[] {new Integer(i)});
return 234;
Metoda f() zwraca wartość, a wiec jak się do niej odnieść? Znalazłem sposób, że powinienem zrobić następującą operację:
return (Integer)o.intValue();
Jednak wywala mi błąd o braku metody intValue().
Jak uzyskać zwracaną wartość przez funkcję w moim przypadku ? Dodam, że kod dotyczy wzorca adapter.
Pozdrawiam.