冻结世界 2023-03-17 23:40 采纳率: 20%
浏览 20

java泛型-泛型方法

接口中写泛型方法,实现类重写该方法会有什么问题么

class Student{
private String name;
}
public Interface Demo {
 
  <T> void say(String s, int i, T t);
}

public class DemoClass implements Demo {

 @override
public <T> void say(String s,int i, T t){
system.out.println(s+i+t.tostring());
}
}
public class Test{

private DemoClass demo;

 public static void main(String args[]){
Student student = new Student();
student.setName("老王");
demo.say("英语", 30, student);
}
}

  • 写回答

2条回答 默认 最新

  • 追cium 2023-03-17 23:52
    关注

    参考GPT和自己的思路:

    如果接口中定义了泛型方法,实现类重写该泛型方法时需要指明具体类型参数,并且必须与接口方法的类型参数一致,否则会编译错误。在你提供的代码中,Demo接口的泛型方法中的参数类型T没有被使用,因此可以将其去掉,实现类中的泛型方法也不需要再指明T类型,可以直接使用。同时,Test类中应该先创建DemoClass对象后再调用其方法。以下是代码的修改示例:

    class Student {
        private String name;
        public void setName(String name) {
            this.name = name;
        }
        public String toString() {
            return name;
        }
    }
    
    public interface Demo {
        void say(String s, int i, Object t);
    }
    
    public class DemoClass implements Demo {
        @Override
        public void say(String s, int i, Object t) {
            System.out.println(s + i + t.toString());
        }
    }
    
    public class Test {
        public static void main(String args[]) {
            DemoClass demo = new DemoClass();
            Student student = new Student();
            student.setName("老王");
            demo.say("英语", 30, student);
        }
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月17日