java父类的父类super_java – 使用泛型将super()调用到父类

我有几个类都扩展了相同的抽象类Encoder.抽象类要求其子代覆盖接受泛型类型参数的抽象方法(在此示例中为Subscriber< T>).覆盖此方法的每个子类对此参数使用不同的类型.

abstract class Encoder {

protected String mSomeArg;

public Encoder(String someArg) {

mSomeArg = someArg+" super";

}

public abstract void start(Subscriber subscriber);

}

class ExampleEncoder extends Encoder {

public ExampleEncoder(String arg) {

super(arg); // how to make super class get generic type?

// eg: new Encoder(arg)

}

@Override

public void start(Subscriber subscriber) {

Message msg = new Message("hi "+mSomeArg);

subscriber.event(msg);

}

}

示例用例:

Encoder sample = new ExampleEncoder();

sample.start(new Subscriber() {

@Override

public void event(Message msg) {

Log(msg.text());

}

});

Encoder otherSample = new OtherEncoder();

sample.start(new Subscriber() {

@Override

public void event(OtherThing thing) {

Log(thing.toString());

}

});

问题:每个子类如何使用此抽象方法所需的泛型类型调用其super()?

注意:使用订阅者在这个抽象方法中,这个例子会破坏我使用泛型的目的.此外,使用它所需的泛型类型实例化每个子类(例如:new ExampleEncoder< Message>())似乎是一种看似合理的解决方法,但似乎也没有必要

解决方法:

这个

class ExampleEncoder extends Encoder {

是一个raw-type.我很确定你想要的东西

class ExampleEncoder extends Encoder {

如果你想要具体类也是通用的那么你可以使用

class ExampleEncoder extends Encoder

但是您需要修改start以获取订阅者< T>.

标签:java,generics

来源: https://codeday.me/bug/20190528/1171856.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值