Java实现Callable接口 出现的泛型问题

//错误代码
class MyCallable<Integer> implements Callable<Integer>
{
    int sum=0;
    @Override
    public Integer call() throws Exception {
        for(int i=0;i<=100;i++)
        {
            System.out.println(Thread.currentThread().getName()+"输出"+i);
            sum+=i;
        }
        return sum;//报错
    }
}

//正确代码
class MyCallable<Integer> implements Callable<java.lang.Integer>
{
    int sum=0;
    @Override
    public java.lang.Integer call() throws Exception {
        for(int i=0;i<=100;i++)
        {
            System.out.println(Thread.currentThread().getName()+"输出"+i);
            sum+=i;
        }
        return sum;
    }
}


我想实现Callable接口,为什么<>里面不能填Integer,而是必须填java.lang.Integer,两个不是一样吗

class MyCallable<Integer> implements Callable<Integer>
你这么定义等价于 Integer 是一个你自己定义的符号 和这么写没区别

class MyCallable<T> implements Callable<Integer>
    class MyCallable implements Callable<Integer>
    {
        int sum=0;
        @Override
        public Integer call() throws Exception {
            for(int i=0;i<=100;i++)
            {
                System.out.println(Thread.currentThread().getName()+"输出"+i);
                sum+=i;
            }
            return sum;//报错
        }
    }

应该是用的java关键字了吧