Comparing the values of two generic Numbers

后端 未结 12 1806
小鲜肉
小鲜肉 2020-11-27 04:48

I want to compare to variables, both of type T extends Number. Now I want to know which of the two variables is greater than the other or equal. Unfortunately I

12条回答
  •  不知归路
    2020-11-27 05:36

    What about this one? Definitely not nice, but it deals with all necessary cases mentioned.

    public class SimpleNumberComparator implements Comparator
        {
            @Override
            public int compare(Number o1, Number o2)
            {
                if(o1 instanceof Short && o2 instanceof Short)
                {
                    return ((Short) o1).compareTo((Short) o2);
                }
                else if(o1 instanceof Long && o2 instanceof Long)
                {
                    return ((Long) o1).compareTo((Long) o2);
                }
                else if(o1 instanceof Integer && o2 instanceof Integer)
                {
                    return ((Integer) o1).compareTo((Integer) o2);
                }
                else if(o1 instanceof Float && o2 instanceof Float)
                {
                    return ((Float) o1).compareTo((Float) o2);
                }
                else if(o1 instanceof Double && o2 instanceof Double)
                {
                    return ((Double) o1).compareTo((Double) o2);
                }
                else if(o1 instanceof Byte && o2 instanceof Byte)
                {
                    return ((Byte) o1).compareTo((Byte) o2);
                }
                else if(o1 instanceof BigInteger && o2 instanceof BigInteger)
                {
                    return ((BigInteger) o1).compareTo((BigInteger) o2);
                }
                else if(o1 instanceof BigDecimal && o2 instanceof BigDecimal)
                {
                    return ((BigDecimal) o1).compareTo((BigDecimal) o2);
                }
                else
                {
                    throw new RuntimeException("Ooopps!");
                }
    
            }
    
        }
    

提交回复
热议问题