2011-02-24 193 views
0

我需要調用具有以下簽名的函數。類型鑄造對象類型變量

createColumn (N name, V value, Serializer<N> nameSerializer, Serializer<V> valueSerializer)

我想通過這可能已分配的整數或字符串的值Object類型的變量,我要進行類型轉換automatically..according的價值觀,我分配到的對象類型變量代替顯式轉換是這樣的: -

Object object1= "MY_AGE"; //字符串值指定給到對象類型可變

Object object2= 31; //整數值指派給對象類型變量

createColumn ((String)object1, (int)object2, ....); //由於object1 & 對象2數據類型不會是相同的,而每次我打電話的此功能循環,我想根據我分配到的價值,它應該自動轉換。它*所以,我正在尋找這樣的事情,如果可能的話: -

createColumn (object1, object2, ....);

回答

0

您可以撥打下面的,因爲你不希望檢查在編譯時的類型匹配,

createColumn(object1, object2, (Serializer)serializer1, (Serializer)serializer2); 

編輯:這將編譯,我(與「未」警告)

interface Serializer<T> { } 
public static <N,V> void createColumn (N name, V value, Serializer<N> nameSerializer, Serializer<V> valueSerializer) { 
} 

public static void main(String[] args) throws NoSuchFieldException { 
    Object object1 = "hi"; 
    Object object2 = 31; 
    Serializer<String> serializer1 = null; 
    Serializer<Integer> serializer2 = null; 
    createColumn(object1, object2, (Serializer) serializer1, (Serializer) serializer2); 
} 
+0

是的我試過這個,但它不工作... IDE給我一個錯誤! – 2011-02-24 11:20:30

+0

這是一個錯誤還是警告?類'me.prettyprint.hector.api.factory.HFactory – 2011-02-24 11:20:58

+0

方法createStringColumn不能被應用到給定的類型的 **需要:** java.lang.String中,java.lang.String中 **發現:** java.lang.Object,java.lang.Object' – 2011-02-24 11:27:07

0

當我明白你的問題不是關於鑄造(與編譯時交易申報類型),但轉換(與交易運行時類型的對象)。

考慮使用String.valueOf()方法爲您的Object參數。對於IntegerString它都會生成String表示。

0

我不認爲這是可能的,你已經給了變量一個類型對象,我不知道有什麼辦法來確定它是否真的是一個int或字符串,除非你使用一些醜陋的邏輯來看看什麼字符價值包括但不會是傻瓜證明,除非價值將永遠是一個in泰格或一個字符串。

您是否需要傳遞整數或是否可以將所有內容傳遞爲字符串?

+0

我需要通過這兩個取決於情況..這是更多的運行時選擇 – 2011-02-24 11:23:20

+0

如果它將是一個或另一個,而不是一個更復雜對象,然後創建一個函數IsInt(String yourinput),將該值作爲字符串並檢查每個字符,如果每個字符都在0-9中,則返回true,否則返回false – MattP 2011-02-24 11:26:22