[英]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.