Java 为什么android中允许使用更具体的参数类型进行重写?
我在查看android示例时,在代码中找到了一个我不理解的地方。这是代码(摘自) : 我已经用JDGUI反编译了Java 为什么android中允许使用更具体的参数类型进行重写?,java,android,generics,Java,Android,Generics,我在查看android示例时,在代码中找到了一个我不理解的地方。这是代码(摘自) : 我已经用JDGUI反编译了OnItemViewClickedListener类,声明如下 package android.support.v17.leanback.widget; public abstract interface BaseOnItemViewClickedListener<T> { public abstract void onItemClicked(Presenter.Vi
OnItemViewClickedListener
类,声明如下
package android.support.v17.leanback.widget;
public abstract interface BaseOnItemViewClickedListener<T>
{
public abstract void onItemClicked(Presenter.ViewHolder paramViewHolder, Object paramObject, RowPresenter.ViewHolder paramViewHolder1, T paramT);
}
尝试编译会导致几个错误:B不是抽象的,并且不会覆盖
中的抽象方法dodo(整数、对象、浮点、对象),并且方法不会覆盖或实现超类型中的方法
问题是:
RosterFragment
代码可编译的原因是什么?很容易看出OnItemViewClickedListener
实现了BaseOnItemViewClickedListener
而不是任何常规的BaseOnItemViewClickedListener
定义代码为
在Doc格式中,其
因此,很明显,最后一个参数的T
已解析为行
希望有帮助 很容易看出,
OnItemViewClickedListener
实现了BaseOnItemViewClickedListener
而不是任何常规的BaseOnItemViewClickedListener
定义代码为
在Doc格式中,其
因此,很明显,最后一个参数的T
已解析为行
希望有帮助 您的类实现了MViewClickedListener。您反编译了BaseOnItemViewClickedListener。为什么不直接阅读(并指向)类的javadoc呢。如果它没有,你也不应该使用这个类。这可能是因为你反编译的那个类被混淆了?所以类名是一个字母,我反编译了这个类,因为我认为javadoc可以不同于真正的类,这就解释了这个问题。但在这种情况下,javadoc也没关系。而且没有一个类是不模糊的。您的类实现了OnItemViewClickedListener。您反编译了BaseOnItemViewClickedListener。为什么不直接阅读(并指向)类的javadoc呢。如果它没有,你也不应该使用这个类。这可能是因为你反编译的那个类被混淆了?所以类名是一个字母,我反编译了这个类,因为我认为javadoc可以不同于真正的类,这就解释了这个问题。但在这种情况下,javadoc也没关系。没有一个类是不模糊的
package android.support.v17.leanback.widget;
public abstract interface BaseOnItemViewClickedListener<T>
{
public abstract void onItemClicked(Presenter.ViewHolder paramViewHolder, Object paramObject, RowPresenter.ViewHolder paramViewHolder1, T paramT);
}
interface A<T>{
public void dodo(Integer a, Object b, Float c, T t);
}
class B implements A{
@Override
public void dodo(Integer a, Object b, Float c, String t) {
}
}