java - 实例化通用接口(interface)

标签 java generics anonymous-inner-class

我有一个界面

public interface Foo<T> {
    public void bar(String s, T t);
}

我想写一个方法

public void baz() {
    String hi = "Hello";
    String bye = "Bye";
    Foo<String> foo = new Foo() {
        public void bar(String s, String t) {
            System.out.println(s);
            System.out.println(s);
        }
    };
    foo.bar(hi,bye);
}

我收到错误

<anonymous Test$1> is not abstract and does not override abstract method bar(String,Object) in Foo
    Foo<String> foo = new Foo() {

我对 Java 还很陌生,我确信这是一个简单的错误。我该怎么写这个?

最佳答案

如果您使用的是 java 7,则类型推断此处不适用。您还必须在构造函数调用中提供类型参数

    Foo<String> foo = new Foo<String>() {
        public void bar(String s, String t) {
            System.out.println(s);
            System.out.println(s);
        }
    };
    foo.bar(hi,bye); 

编辑:刚刚注意到您使用了 new Foo()这基本上是一个原始类型,您必须为构造函数调用提供泛型类型,new Foo<String>()

Related Link

关于java - 实例化通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14511649/

相关文章:

java - Java 中如何使用匿名内部类?

Java 更新程序问题

java - 如何使用 Selenium Webdriver 正确查找网页元素?

java - 如何将存储库部分移动到父 build.gradle 配置?

Java 功能集合和未检查的警告

c# - new() 在 `where T: new()?` 中做了什么

java - 匿名内部类 - 表达式的非法开始

java - 我升级到 Android Studio 2.3.3,一个没有错误的旧程序现在出现错误 : "Fragments should be static..."

java - 连接数组列表中的值

java - 与预泛型原始类型的泛型边界