I have an abstract class with generic (T1) that extends my Filterable interface:
public abstract class AbstractAdapter < T1 extends Filterable, T2 extends AbstractAdapter.Cell > extends ArrayAdapter < T1 > {
public abstract class Cell {
public T1 info;
//…
}
public abstract void setData(T2 cell, int position);
//…
}
And i have concrete class with method (setData) and Cell class implementations:
public class ConcreteAdapter extends AbstractAdapter < InfoClass, ConcreteAdapter.Cell > {
public class Cell extends AbstractAdapter.Cell {
//…
}
@Override
public void setData(Cell cell, int position) {
InfoClass info = (InfoClass)cell.info; // need to cast from Filterable to InfoClass (why?). Or i have compilation error
}
//…
}
So, i have ConcreteAdapter class with first generic class as InfoClass (that extends Filterable), in method setData i have Cell class object, but field “info” i see just as Filterable, not InfoClass. I think, field “info” already should be as generic type, because it declared as
T1 info;
but not
Filterable info;
Is it possible change field type from extendable to generic class without cast? Or its a bug in IDE?
今天的文章java抽象类泛型_Java抽象类使用泛型实现(Java abstract class Implementing with generics)分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/33785.html