我正在處理我的項目,我需要檢查某個特定值是否等於數據集上的值。將對象投射到未知數據類型
這是我創建的功能:
public void setSingleLimit(String columnName, Object limit){
}
其中columnName
是我的數據集的我會申請的功能和limit
列是在平等條件檢查使用的值。
所以基本上,這個函數將採用limit
值,並檢查columnName
中的所有值是否等於或不等於該值。
但是,我不知道之前手中的列的類型。但是,我可以獲取函數中列的數據類型。
dataset.first().get(columnName).getClass()
給我的類中的值的列中(我們可以安全地假定列中的所有值將屬於同一類/數據類型)
我想投的limit
在函數中接收到的對象爲列類類型,以便能夠進行比較。
我知道我可以重寫函數,以便它可以接受不同的值(int,long,Boolean,String等),這當然會起作用。但是,我想創建一個簡單的方法,以減少複雜性並使我的最終用戶更容易理解。我們還可以安全地假設用戶將在函數中輸入正確的值,這意味着如果列是字符串的列,則用戶不會放置不是字符串的值。
任何關於如何將對象投射到事先未知的類的想法?
謝謝。
我想你將不得不使用java反射,像[this](https://stackoverflow.com/questions/14319760/java-reflection-casting-to-an-unknown-object?rq=1),但我我不能夠進一步幫助你 –
你說你想檢查平等。爲什麼你不能只用'equals(Object o)'?它在Object中聲明並接受一個Object作爲參數。該實現將在運行時動態綁定。 –
你知道可以進去的可能類型的子集嗎?如果是這樣,那麼你可以用這些參數創建私有方法,並在公共方法中使用'if(limit instanceof)'或'if( .getClass()。isAssignableFrom(limit.getClass()))''。我知道它太難看了,但如果沒有太多的限制,你可以忍受它。 –
bilak