2011-02-24 264 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