Refleksja metoda przyjmująca String

0

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?
}

3

Zacząłbym od getMethods() a nie fields.

0

Poprawione

Method[] m = o.getClass().getMethods();
				
				for(Method method : m) {
2

@Mattii4211: To co Shalom napisał + method.getParameterTypes()

0

Jeśli ma być pusta to robię method.getParameterTypes() == null a jak ze string sobie poradzić?

0

No a sprawdź co ci zwraca ten getParameterTypes()...

0

Tablicę obiektów

0

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

0

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));

1 użytkowników online, w tym zalogowanych: 0, gości: 1