我正在处理我的项目,我需要检查某个特定值是否等于数据集上的值。将对象投射到未知数据类型
这是我创建的功能:
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