簡體   English   中英

在Java中傳遞動態類對象

[英]Passing dynamic class objects in Java

將動態類對象作為參數傳遞的最佳方法是什么?

我的用例是這樣的,

我有一個公共網絡類,它根據給定的類型執行網絡操作,然后將響應轉換為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);

后來,我想從overriden類接收動態對象。

例如

@Override
 public void success(Object requestedObject) {

 AuthToken authToken = (AuthToken) requestedObject;

}

要么

@Override
 public void success(Object requestedObject) {

 Login login = (Login) requestedObject;

}

有沒有辦法在Java中實現這一點?

我找到了一些基於Java Generics和Reflection的類似解決方案,但我不確定如何在這種情況下應用它。

您可以使用instanceof運算符來檢查Object param的子類型:

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

如果你的success不會收到除AuthTokenLogin任何其他內容,或者其他任何東西,以后類型的數量不會增長,我建議你制作重載方法來強制實現更好的類型安全,如下所示:

public abstract void success(AuthToken at);
public abstract void success(Login l); 
public abstract void success(WhateverElse obj);

看看給定的非常有限的上下文,我猜上面的條件適用,所以方法重載將是你最好的選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM