Refleksja metoda przyjmująca String

Refleksja metoda przyjmująca String
M4
  • Rejestracja:około 10 lat
  • Ostatnio:około 5 lat
  • Postów:221
0

W jaki sposób pobrać metodę, która nie przyjmuje żadnych parametrów lub przyjmuje String

Kopiuj
Object o = constructor.newInstance();
Field[] f = o.getClass().getDeclaredFields();
for(Field field : f) {
if() // jaki warunek?
}

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
3

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


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Burdzi0
Dlaczego nie getDeclaredMethods()? Zwróci więcej niż getMethods()
Shalom
To już trochę kwestia co autor chce uzyskać ;]
M4
  • Rejestracja:około 10 lat
  • Ostatnio:około 5 lat
  • Postów:221
0

Poprawione

Kopiuj
Method[] m = o.getClass().getMethods();
				
				for(Method method : m) {
S9
  • Rejestracja:ponad 10 lat
  • Ostatnio:6 miesięcy
  • Lokalizacja:Warszawa
  • Postów:3573
2

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


"w haśle <młody dynamiczny zespół> nie chodzi o to ile masz lat tylko jak często zmienia się skład"
M4
  • Rejestracja:około 10 lat
  • Ostatnio:około 5 lat
  • Postów:221
0

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

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

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


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
M4
  • Rejestracja:około 10 lat
  • Ostatnio:około 5 lat
  • Postów:221
0

Tablicę obiektów

Shalom
  • Rejestracja:ponad 21 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
0

O RLY? Dokumentacja mówi co innego.
https://docs.oracle.com/javase/10/docs/api/java/lang/reflect/Executable.html#getParameterTypes()

Kopiuj
public abstract Class<?>[] getParameterTypes()

Czyli dostajesz tablicę obiektów typu Class. Można je np. porównać ze String.class


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
M4
Unlikely argument type for equals(): Class<String> seems to be unrelated to Class<?>[] - taki komunikat mam w Eclipse
Shalom
No próbujesz porównań tablicę z obiektem. To sie nie uda...
M4
porównuję element tablicy
Shalom
Nie. Komunikat błędu jasno mówi że porównujesz obiekt z tablicą. Nie kłam.
M4
Eclipse coś nie odświeżył
M4
  • Rejestracja:około 10 lat
  • Ostatnio:około 5 lat
  • Postów:221
0

A jeszcze 1 pytanie w jaki sposób z adnotacji wyłuskać publiczne pole?
coś takiego zadziała:

Kopiuj
if (method.isAnnotationPresent(StringParameter.class)) {
		Field fs = o.getClass().getAnnotations().getClass().getField("value");
		String s = String.valueOf(fs.getChar(this));
edytowany 2x, ostatnio: Mattii4211

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.