繁体   English   中英

实例化通用接口

[英]Instantiating a Generic Interface

我有一个界面

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,则类型推断不适用于此处。 您还必须在构造函数调用中提供Type参数

    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() ,它基本上是一个原始类型,你必须为你的构造函数invokation提供泛型类型, new Foo<String>()

相关链接

你忘记了一个<String>

public void baz() {
    String hi = "Hello";
    String bye = "Bye";
    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);
}
Foo<String> foo = new Foo<String>() {
  @Override
  public void bar(String s, String t) {
    System.out.println(s);
    System.out.println(s);
  }
};

用以下代码更改它编译并运行完美。

        Foo<String> foo = new Foo<String>() {

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM