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