W jaki sposób pobrać metodę, która nie przyjmuje żadnych parametrów lub przyjmuje String
Object o = constructor.newInstance();
Field[] f = o.getClass().getDeclaredFields();
for(Field field : f) {
if() // jaki warunek?
}
Zacząłbym od getMethods()
a nie fields.
Poprawione
Method[] m = o.getClass().getMethods();
for(Method method : m) {
@Mattii4211: To co Shalom napisał + method.getParameterTypes()
Jeśli ma być pusta to robię method.getParameterTypes() == null
a jak ze string
sobie poradzić?
No a sprawdź co ci zwraca ten getParameterTypes()...
Tablicę obiektów
O RLY? Dokumentacja mówi co innego.
https://docs.oracle.com/javase/10/docs/api/java/lang/reflect/Executable.html#getParameterTypes()
public abstract Class<?>[] getParameterTypes()
Czyli dostajesz tablicę obiektów typu Class
. Można je np. porównać ze String.class
Unlikely argument type for equals(): Class<String> seems to be unrelated to Class<?>[]
- taki komunikat mam w Eclipse
A jeszcze 1 pytanie w jaki sposób z adnotacji wyłuskać publiczne pole?
coś takiego zadziała:
if (method.isAnnotationPresent(StringParameter.class)) {
Field fs = o.getClass().getAnnotations().getClass().getField("value");
String s = String.valueOf(fs.getChar(this));
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.
getDeclaredMethods()
? Zwróci więcej niżgetMethods()
Shalom