从抽象类继承时使用Java泛型

时间:2016-06-15 05:09:43

标签: java generics

我想从抽象类扩展泛型类型:

abstract class Foo {
    public void doStuff() {}
}

public class Bar<T extends Foo> {
    public void doFooBar(Foo param) {
        /* Code here */
        param.doStuff();
    }
}

换句话说:类Bar应该使用泛型类型创建,它从Foo扩展而来。 Bar应该能够有方法,其中Foo是一个参数(因为泛型类型从Foo扩展,所以它应该是可能的)。 使用String oder BigDecimal这样的预定义类代替Foo,它到目前为止一直有用。但就我而言,Bar抱怨没有找到Foo课。 我正在使用Eclipse。

我错过了什么吗?

解: Foo必须是一个公共修饰语,而不是它的作用。我预计,抽象类默认是公共的(如Interfaces)。 Eclipse并没有抱怨缺少修饰符。

2 个答案:

答案 0 :(得分:0)

dispatch_async(dispatch_get_main_queue(), { () -> Void in
        //SearchViewController
        var vc = UIViewController()
        vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("Search") as! SearchViewController
        //DetailViewController
        var viewController = UIViewController()
        titreDetail = "Boo"
        viewController = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("Detail") as! DetailViewController

       vc.showViewController(viewController, sender: nil)
    })

是语法错误。

将其更正为

abstract class Foo() {
    ... 

导致无编译错误。另外,请注意它应该是

abstract class Foo { 
    ... 

答案 1 :(得分:-1)

删除classname Foo后的()parantheses

以下是修改后的代码:

abstract class Foo {
    public void doStuff() {}
}