![](/img/trans.png)
[英]Java Method with the parameter “List<Class<? extends Object>>”
[英]Java Method override with the parameter “Class<? extends Object>”
当我尝试覆盖一个方法时,我遇到了java的问题,我的代码如下:
public abstract class CustomAdapter{
public abstract Boolean addItem(Class<? extends Object> aObject);
}
public class RainAdapter extends CustomAdapter {
@Override
public Boolean addItem(ClassOfRain aRainInfo) {
// do something
return true;
}
}
我可以将“Class”声明为“ClassOfRain”吗? 如果有,该怎么办?
谢谢你的阅读!
我觉得你有点困惑。 你确定你不是想说:
public abstract class CustomAdapter<T extends Object> {
public abstract Boolean addItem(T aObject);
}
public class RainAdapter extends CustomAdapter<Rain> {
@Override
public Boolean addItem(Rain aRainInfo) {
// do something
return true;
}
}
在我对您的类结构的解释中,您正在尝试创建一个通用的addItem
方法,因此传递实际的类对象是没有用的。
这是不可能的。 方法覆盖意味着您放置完全相同的方法标头。 您唯一可以更改的是给定参数的名称。
Class<Rain.class>
将包含Rain
类的反射。 但这不起作用,因为重写的方法必须具有相同的形式参数,所以你必须使用Class<? extends Object>
Class<? extends Object>
。
实现抽象/接口方法和/或覆盖时,方法签名必须匹配...你可以做这样的事情
public abstract class CustomAdapter{
public abstract Boolean addItem( Object o );
}
public class RainAdapter extends CustomAdapter {
public Boolean addItem( Object o ){
if ( o.getClassName().equals( "ClassOfRain" ) ){
return this.addItem( (ClassOfRain) o );
}
return false;
}
private Boolean addItem(ClassOfRain aRainInfo) {
// do something
return true;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.