java - 在Java中传递动态类对象

标签 java android retrofit2 okhttp

将动态类对象作为参数传递的最佳方法是什么?

我的用例是这样的,

我有一个通用网络类,它根据给定类型执行网络操作,然后将响应转换为 pojo 类。这是一个演示,

 public abstract class CommonOperations {

     public void getAuthToken() {
     ......
     AuthToken authToken = response.body();
     success(authToken);
    }

     public void performLogin() {
     ......
     Login login = response.body();
     success(login);
    }

    }

 public abstract void success(Object object);

稍后,我想从重写的类接收动态对象。

例如

@Override
 public void success(Object requestedObject) {

 AuthToken authToken = (AuthToken) requestedObject;

}

@Override
 public void success(Object requestedObject) {

 Login login = (Login) requestedObject;

}
<小时/>

有什么方法可以用Java实现这一点吗?

我发现了一些基于 Java 泛型和反射的类似解决方案,但我不确定如何在这种情况下应用它。

最佳答案

您可以使用 instanceof 运算符来检查 Object 参数的子类型:

@Override
public void success(Object requestedObject) {
    if(requestedObject instanceof AuthToken) {
        AuthToken authToken = (AuthToken) requestedObject;
    } else if(requestedObject instanceof Login) {
        Login login = (Login) requestedObject;
    }
    // ...
}

关于java - 在Java中传递动态类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38411083/

相关文章:

java - 初学者 : Java While loop won't exit?

android - 改造 2 : How to set individual timeouts on specific requests?

java - 如何使 Retrofit 接受每个请求的下载进度回调?

java - 每行可变列宽的表格(类似于 iOS 的 UICollectionView)

android - 浏览器下载完成通知

java - 包含来自 ServiceHelper 的 Retrofit API 接口(interface)方法的映射

java - 让 Broadleaf 在单元测试中运行

java - 某些服务器生成的事件不会通过 Websockets 传递到生产环境中的客户端

java - 如何对分钟值进行舍入?

java - 在manifest中使用一个flavor的包