如何在java中运行时执行typecastng?

时间:2014-12-30 20:34:18

标签: java rest reflection

我正在尝试为通过REST公开的服务创建一个客户端。我有多个类扩展单个类。

现在当我发送请求并获得响应时,每次我需要输入特定类的响应时。我正在尝试自动执行此过程,这可以在运行时实现吗?

我正在考虑使用泛型和反射但无法前进。我真正想要实现的只是提到一个唯一的字符串或说请求,我必须能够得到完全相同的响应而不用类型转换它回应类。

通过使用泛型,我成功地减少了一些用于类型转换的代码,但我仍然不满意,因为我想在运行时完全实现它。

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

每次我需要提及请求和响应类时,我都不想这样做。

我可以做一些事情,我可以将请求和响应类映射到一个键或一个字符串,并根据它,代码将获取请求和响应类并根据它执行操作(不确定)。 / p>

请指导我这样做,或任何其他方式我可以做上述事情。 提前谢谢。

2 个答案:

答案 0 :(得分:-1)

考虑使用众多Java REST库中的一个。我们的客户端使用Jersey API来处理对基于Python的RESTful服务器的请求和响应。

Jersey使用名为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 :(得分:-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.