Как вызвать метод в Java с помощью отражения? - PullRequest
2 голосов
/ 28 июня 2019

У меня есть сценарий, в котором я создаю экземпляр класса и вызываю метод, подобный приведенному ниже, с использованием механизма отражения java.

    WorkerObjectType workerObjectType = new WorkerObjectType();
    WorkerObjectIDType workerObjectIdType = new WorkerObjectIDType();
    workerObjectIdType.setType("Employee_ID");
    workerObjectIdType.setValue("102");
    workerObjectType.getID().add(workerObjectIdType);
    workerReqReferenceType.getWorkerReference().add(workerObjectType);

Для приведенного выше случая я попытался использовать отражение java, как показано ниже:

Class<?> workerObjectTypeRef = Class.forName("platinum.humanresource.WorkerObjectType");
Object workerObjectType = workerObjectTypeRef.newInstance();
Class<?> workerObjectIDTypeRef = Class.forName("platinum.humanresource.WorkerObjectIDType");
Object workerObjectIdType = workerObjectIDTypeRef.newInstance();
Method setType = workerObjectIDTypeRef.getDeclaredMethod("setType", String.class);
setType.invoke(workerObjectIdType, "Employee_ID");
Method setValue = workerObjectIDTypeRef.getDeclaredMethod("setValue", String.class);
setValue.invoke(workerObjectIdType, "102");

Я не могу сделать это, особенно в следующем сценарии:

workerObjectType.getID().add(workerObjectIdType);
workerReqReferenceType.getWorkerReference().add(workerObjectType);

1 Ответ

0 голосов
/ 28 июня 2019

Вам нужно будет вызывать методы получения для экземпляров, а затем вызывать методы для возвращенных экземпляров, также используя отражение.Вот пример для workerObjectType.getID().add(workerObjectIdType)

Method getID = workerObjectTypeRef.getDeclaredMethod("getID");
Object id = getID.invoke(workerObjectType);
Class idRef = id.getClass();
Method add = idRef.getDeclaredMethod("add", workerObjectIDTypeRef);
add.invoke(id, workerObjectIDType);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...