Java 将对象强制转换为未知数据类型

Java 将对象强制转换为未知数据类型,java,casting,Java,Casting,我正在进行我的项目,我需要检查特定值是否等于数据集上的值 这是我正在创建的函数: public void setSingleLimit(String columnName, Object limit){ } 其中columnName是我将应用函数的数据集的列,limit是相等条件检查中使用的值 因此,基本上,这个函数将获取限制值,并检查columnName中的所有值是否等于该值 然而,我手头上不知道该列的类型。但是,我可以在函数中获取列的数据类型 dataset.first.getcolum

我正在进行我的项目,我需要检查特定值是否等于数据集上的值

这是我正在创建的函数:

public void setSingleLimit(String columnName, Object limit){

}
其中columnName是我将应用函数的数据集的列,limit是相等条件检查中使用的值

因此,基本上,这个函数将获取限制值,并检查columnName中的所有值是否等于该值

然而,我手头上不知道该列的类型。但是,我可以在函数中获取列的数据类型

dataset.first.getcolumnName.getClass 给我列中的值的类,我们可以安全地假设列中的所有值都属于同一类/数据类型

我想将函数中接收到的limit对象转换为columns类类型,以便能够进行比较

我知道我可以重写这个函数,这样它就可以接受不同的值int、long、Boolean、String等等,这肯定会起作用。但是,我想创建一个简单的方法,以降低复杂性,并便于最终用户理解。我们还可以安全地假设用户将在函数中输入正确的值,这意味着如果该列是字符串列,则用户不会输入非字符串的值

知道如何将对象强制转换到一个以前不知道的类吗


多谢各位

如果不使用cast,我会这样做:

if(limit instanceof anyDataset) {
//Compare
}

如果不使用cast,我会这样做:

if(limit instanceof anyDataset) {
//Compare
}
在比较和强制转换对象时,可以使用instanceof comparison来确保类型安全

例如:

如果限制布尔值的实例{ //做点什么 }

这将避免ClassCastException,并确保您使用所期望的确切数据类型执行所需操作

有关instanceof的更多信息:

在比较和强制转换对象时,可以使用instanceof comparison来确保类型安全

例如:

如果限制布尔值的实例{ //做点什么 }

这将避免ClassCastException,并确保您使用所期望的确切数据类型执行所需操作

有关instanceof的更多信息:


你说你想检查平等性。只需使用equalsObject o。它在对象上声明并接受对象作为参数。实现将在运行时动态绑定

public void setSingleLimit(String columnName, Object limit){
    Object columnValue = getValue(columnName);
    limit.equals(columnValue); // If limit can be null, swap variables
}
例如: 若limit是一个字符串,则将使用等于from String。columnValue是否不是字符串无关紧要,因为在这种情况下它只会返回false


只要确保不同的equals实现符合您的要求。如果您使用自定义类,您可以自己覆盖它。

您说要检查是否相等。只需使用equalsObject o。它在对象上声明并接受对象作为参数。实现将在运行时动态绑定

public void setSingleLimit(String columnName, Object limit){
    Object columnValue = getValue(columnName);
    limit.equals(columnValue); // If limit can be null, swap variables
}
例如: 若limit是一个字符串,则将使用等于from String。columnValue是否不是字符串无关紧要,因为在这种情况下它只会返回false


只要确保不同的equals实现符合您的要求。如果您使用自定义类,您可以自己覆盖它。

我认为您将不得不使用java反射,如[this],但我无法进一步帮助您,您说您想检查是否相等。为什么不能直接使用equalsObject o?它在对象上声明并接受对象作为参数。实现将在运行时动态绑定。您知道可以放入其中的可能类型的子集吗?如果是这样的话,您可以使用这些参数创建私有方法,在公共方法中只使用If limit instanceof或If.getClass.isAssignableFromlimit.getClass。我知道这很难看,但如果没有太多类型的限制,你可以接受它。我认为你必须使用java反射,像这样,但我无法进一步帮助你,你说你想检查平等性。为什么不能直接使用equalsObject o?它在对象上声明并接受对象作为参数。实现将在运行时动态绑定。您知道可以放入其中的可能类型的子集吗?如果是这样的话,您可以使用这些参数创建私有方法,在公共方法中只使用If limit instanceof或If.getClass.isAssignableFromlimit.getClass。我知道这很难看,但如果没有太多的限制,你可以接受。