class compare {    static void show(Object o)
    {
     System.out.println(o);
    }
    public static void main (String[] args) {
    String str1="this";
    show(str1.compareTo("thit"));
    show(str1.compareToIgnoreCase("This"));
    show(str1.compareTo("This"));
    }
}出现错误:
F:\Java\程序文件\compare.java:17: show(java.lang.Object) in compare cannot be applied to (int)
    show(str1.compareTo("thit"));
    ^
F:\Java\程序文件\compare.java:18: show(java.lang.Object) in compare cannot be applied to (int)
    show(str1.compareToIgnoreCase("This"));
    ^
F:\Java\程序文件\compare.java:19: show(java.lang.Object) in compare cannot be applied to (int)
    show(str1.compareTo("This"));
    ^
3 errors请大家指教为什么出现这错误!

解决方案 »

  1.   

    LZ你的JDK版本不是1.5的吗?是1.5就不会错了,会自动装箱的
    因为String.compareTo(String) 返回的是int型,而你的show方法的参数是object的
    如果不自动转成Integer就会报错
      

  2.   

    1楼说得正确 你现在不show方法里面的Object改成int就可以了 或者换更高版本的JDK就可以了
      

  3.   

        static void show(Object o)
        {
            System.out.println(o);
        }
        public static void main (String[] args) {
        String str1="this";
        
        show(Integer.valueOf(str1.compareTo("thit")));
        show(Integer.valueOf(str1.compareToIgnoreCase("This")));
        show(Integer.valueOf(str1.compareTo("This")));
        }
      

  4.   

    int 不能直接赋值给Object, 当然在jdk 1.5及以后可以自动转 int 为 Integer 使用
      

  5.   

    这题有意思涉及到自动包装,多态(toString)
      

  6.   

    两个解决方法:1。装高版本的jdk,2,把你函数参数的类型改成int