2014-12-30 2 views
0

Я пытаюсь сделать клиент для сервисов, открытых через REST.I имеет несколько классов, расширяющих один класс.Как выполнить typecastng во время выполнения в java?

Теперь, когда я отправляю запрос и получаю отклик, каждый раз, когда мне нужно набирать ответ для определенного класса. Я пытаюсь автоматизировать этот процесс, может ли это быть достигнуто во время выполнения?

Я думаю об использовании дженериков и отражений, но не могу двигаться вперед. То, что я точно хочу достичь, просто упомянув уникальную строку или сказать запрос, я должен иметь возможность получить тот же самый ответ, не задавая тип с помощью этого конкретный класс ответов.

Используя обобщения, мне удалось свести код к типированию, но я не удовлетворен, так как хочу полностью достичь его во время выполнения.

RequestClass request=(RequestClass)getRequest(some attributes); 
output=(Responseclass)response.getResult(); 

Здесь каждый раз, когда мне нужно указать классы запроса и ответа, я не хочу этого делать.

Могу ли я сделать что-то, где я могу сопоставить классы запроса и ответа с ключом или строкой, и на основе этого кода будет получен класс запроса и ответа и выполнить операцию в соответствии с ним (не уверен в этом).

пожалуйста, помогите мне в этом, или любым другим способом, я могу сделать вышеупомянутое. Спасибо заранее.

+2

Просьба представить более подробную информацию о том, что вам нужна помощь. Например, вы должны включить пример запроса и соответствующий ответ. – Floegipoky

+0

По-прежнему сложно понять, что вы просите. Можете ли вы показать, как вы хотите, чтобы ваш код выглядел? Вы управляете кодом для методов getRequest и getResult? – VGR

ответ

-1

Рассмотрите возможность использования одной из многих библиотек Java REST. Наш клиент использует API Джерси для обработки запросов и ответов на наш RESTful-сервер на основе Python.

Джерси использует класс, называемый ClientResponse, который хранит общие данные ответа. вы можете использовать метод getEntity для возврата ответа в виде определенного типа.

Вот выдержка из моего кода, который имеет дело только со строками, но вы можете увидеть, как он может быть продлен:

ClientResponse response; //a Jersey class 
    String responseText; 
    WebResource odbc = resourceCollection.path("ODBC"); //another Jersey class 
    try { 
     //we send a POST and get a response stored as generic 
     response = odbc.type(media) 
       .accept(MediaType.APPLICATION_XML,MediaType.TEXT_PLAIN) 
       .post(ClientResponse.class, formdata); 
     //we pull out the response entity as a string 
     responseText = response.getEntity(String.class); 
    } catch (UniformInterfaceException e) { 
     write("<UniformInterfaceException>\n"); 
     write(" Response type was not expected\n"); 
     write("</UniformInterfaceException>\n"); 
     return;   
    } catch (ClientHandlerException e) { 
     write("<Error>\n"); 
     write(" Unable to connect or connection refused\n"); 
     write("</Error>\n"); 
     return; 
-1
public class DynamicCasting{ 
    DynamicCasting e1=new DynamicCasting(); 
    private Object obj=new Object(); 
    DynamicCasting.doSomething(obj); 
    public static DynamicClass doSomething(DynamicClass dynClassObject){ 
     return dynClassObject; 
    } 
} 

The obj will be type casted to DynamicClass in this example. 
Смежные вопросы