|
|
|
Рефлекшен - вызвать метод по имени с переменным числом аргументом.
|
|||
|---|---|---|---|
|
#18+
Есть "операция" Код: java 1. 2. 3. 4. 5. 6. Как ее выполнить? Чтобы найти метод в классе нужно задать все аргументы Код: java 1. Но их может быть разное число или не быть вовсе - как это можно сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 03:35 |
|
||
|
Рефлекшен - вызвать метод по имени с переменным числом аргументом.
|
|||
|---|---|---|---|
|
#18+
Нужно реализовать что-то вроде Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 03:37 |
|
||
|
Рефлекшен - вызвать метод по имени с переменным числом аргументом.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 03:45 |
|
||
|
Рефлекшен - вызвать метод по имени с переменным числом аргументом.
|
|||
|---|---|---|---|
|
#18+
Вобщем сделал чтобы все это заработало Код: java 1. 2. 3. 4. 5. 6. 7. Но, это работает не всегда, например если мы хотим вызвать такой метод метод: Код: java 1. 2. 3. То это работать не будет - он почему-то пытается развернуть последний массив и выкидывает ексепшен пытаясь найти несуществуюший метод Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 05:03 |
|
||
|
Рефлекшен - вызвать метод по имени с переменным числом аргументом.
|
|||
|---|---|---|---|
|
#18+
private Код: java 1. Так работает: Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 05:14 |
|
||
|
Рефлекшен - вызвать метод по имени с переменным числом аргументом.
|
|||
|---|---|---|---|
|
#18+
Можно переопределить метод так: Код: java 1. и можно будет вызывать методы таким образом: Код: java 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 05:27 |
|
||
|
Рефлекшен - вызвать метод по имени с переменным числом аргументом.
|
|||
|---|---|---|---|
|
#18+
Спасибо, как оказалось - проблема была в другом, сам рефлекшен работает нормально. Поменяю вопрос: нужно сделать метод который может принимать все что угодно. public void add(Object... arguments) {} Но, если мы вызываем его с массивом - как определить что там был массив? add("A", "B") {} add(["A", "B"]) {} в обоих случаях arguments будет ["A", "B"]. А мне нужно чтобы сигнатура сохранялась - и во втором случае было [["A", "B"]] потому-что иначе потом не удается найти нужный метод через рефлекшен. Это как-то можно решить? Определить универсальный метод который может принимать чтоугодно и не терять сигнатуры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 05:36 |
|
||
|
Рефлекшен - вызвать метод по имени с переменным числом аргументом.
|
|||
|---|---|---|---|
|
#18+
privateне удается найти нужный метод через рефлекшен. Это как-то можно решить? Код: java 1. перебираем методы с одинаковыми именами, которые без переменных аргументов (т.е. с условием ! isVarArgs()). И только после этого искать методы с vararg-аргументами. А вообще именно для этого случая лучше добавить еще один call-метод: Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 05:59 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38684297&tid=2126968]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
216ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 259ms |
| total: | 560ms |

| 0 / 0 |
