繁体   English   中英

如何在Java运行时执行typecastng?

[英]how to perform typecastng at runtime in java?

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

现在,当我发送请求并获得响应时,每次我都需要键入将响应转换为特定类。我正在尝试使该过程自动化,这可以在运行时实现吗?

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

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

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

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

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

请引导我执行此操作,或者以其他任何方式可以执行上述操作。 提前致谢。

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

泽西岛使用称为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;
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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM