Java 处理长最小值条件

Java 处理长最小值条件,java,Java,当我运行一个程序时,long min值被持久化,而不是来自后端的原始值 我正在使用代码: if (columnName.equals(Fields.NOTIONAL)) { orderData.notional(getNewValue(data)); 作为输出,我得到的是长最小值,而不是原始值 我试着用这个方法来处理这个场景 public String getNewValue(Object data) { return ((Long)data).getL

当我运行一个程序时,long min值被持久化,而不是来自后端的原始值

我正在使用代码:

if (columnName.equals(Fields.NOTIONAL)) {
            orderData.notional(getNewValue(data));
作为输出,我得到的是长最小值,而不是原始值

我试着用这个方法来处理这个场景

public String getNewValue(Object data) {
        return ((Long)data).getLong("0")==Long.MIN_VALUE?"":((Long)data).toString();
    }
但是不起作用


请建议编辑:我误读了问题中的代码;重读一遍,我现在明白了作者试图做的事情,并因此清理了这个建议

getLong(“0”)是一种写入
null
的愚蠢方式,因为这样做没有任何作用。它检索名为“0”的系统属性,然后尝试将其作为长值进行分析。如中所示,如果使用
java-D0=1234 com.foo.YourClass
启动VM,则返回1234。我甚至不知道你打这个电话想干什么。显然,它不等于
Long.MIN_VALUE
,因此该方法返回((Long)data).toString()。如果
data
实际上是一个表示最小值的长字符,那么您将得到最小值的数字,显然不是您想要的

试试这个:

public String getNewValue(Object data) {
    if (data instanceof Number) {
        long v = ((Number) data).longValue();
        return v == Long.MIN_VALUE ? "" : data.toString();
    }
// what do you want to return if the input isn't a numeric object at all?
    return "";

编辑:我误读了问题中的代码;重读一遍,我现在明白了作者试图做的事情,并因此清理了这个建议

getLong(“0”)是一种写入
null
的愚蠢方式,因为这样做没有任何作用。它检索名为“0”的系统属性,然后尝试将其作为长值进行分析。如中所示,如果使用
java-D0=1234 com.foo.YourClass
启动VM,则返回1234。我甚至不知道你打这个电话想干什么。显然,它不等于
Long.MIN_VALUE
,因此该方法返回((Long)data).toString()。如果
data
实际上是一个表示最小值的长字符,那么您将得到最小值的数字,显然不是您想要的

试试这个:

public String getNewValue(Object data) {
    if (data instanceof Number) {
        long v = ((Number) data).longValue();
        return v == Long.MIN_VALUE ? "" : data.toString();
    }
// what do you want to return if the input isn't a numeric object at all?
    return "";

Long.getLong这是一个静态方法,用于检查名为“0”的systemProperty的值,是否确实要这样做?数据是一个长对象吗?如果是,为什么要调用getLong?如果column得到一些值,那么必须将其持久化,但不是原始值,而是将long min值持久化。因此,我编写第二个块来处理该条件,但这也不起作用。您希望通过此操作得到什么:
((long)数据)。getLong(“0”)
?可能是您误用了
getLong
而不是
parseLong
?从后端存储的值为0N,当我尝试在我的末尾持久化时,它将作为long min值出现,我希望将其存储为0。所以,我只是尝试了不同的方法来获取数据correctedLong.getLong它是一个静态方法,用于检查名为“0”的systemProperty的值,您确定要这样做吗?数据是一个长对象吗?如果是,为什么要调用getLong?如果column得到一些值,那么必须将其持久化,但不是原始值,而是将long min值持久化。因此,我编写第二个块来处理该条件,但这也不起作用。您希望通过此操作得到什么:
((long)数据)。getLong(“0”)
?可能是您误用了
getLong
而不是
parseLong
?从后端存储的值为0N,当我尝试在我的末尾持久化时,它将作为long min值出现,我希望将其存储为0。所以,我只是尝试了不同的方法来从后端获得正确的数据,存储的值是0N,当我尝试在我的端持久化时,它将作为最长的min值,我想从后端获得存储的值是0N,但当我运行代码时,在我的端持久化的值是:-9223372036854775808。当我进一步分析它时,我发现这是long min值,而不是来自backendI的实际值。我准确地解释了代码的错误。如果你不明白,也许可以找一个java程序员,他可以跟着你做?我不知道如何更好地解释它。从后端存储的值是0N,当我尝试在我的端持久化时,它将作为long min value来存储,我想将它存储为0from backend value是:0N,但当我运行代码时,在我的端持久化的值是:-9223372036854775808。当我进一步分析它时,我发现这是long min值,而不是来自backendI的实际值。我准确地解释了代码的错误。如果你不明白,也许可以找一个java程序员,他可以跟着你做?我不知道如何更好地解释它。