巴啦啦拉粑粑
2021-07-14 01:19
采纳率: 40%
浏览 57
已采纳

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,两个不是一样吗

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 走一步-再走一步 2021-07-14 08:04
    已采纳
    class MyCallable<Integer> implements Callable<Integer>
    你这么定义等价于 Integer 是一个你自己定义的符号 和这么写没区别
    
    class MyCallable<T> implements Callable<Integer>
    
    已采纳该答案
    打赏 评论
  • 走一步-再走一步 2021-07-14 08:03
        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;//报错
            }
        }
    
    打赏 评论
  • MisterMister 2021-07-14 08:41

    应该是用的java关键字了吧

    打赏 评论

相关推荐 更多相似问题