我是半熟的Java,并且在Groovy中尝试过。
Groovy / Java中是否存在以下内容:
public class A {
}
public class B {
}
public class C<Ta extends A, Tb extends B> extends Ta {
public Ta[] bArray;
public Tb[] getAllBs()
{
Tb[] ret = new Tb[0];
....
return ret;
}
}
以上定义不显示任何错误。但是当我尝试使用C作为另一种类型的基类时,我收到一个错误:
public class DummyA extends A {};
public class DummyB extends B {};
public class D extends C<DummyA, DummyB> {
}
以上定义显示错误'D类型的层次结构不一致'。
如果我将C重新定义为以下任何一项,则错误消失:
//remove the base class, Ta, from C
public class C<Ta extends A, Tb extends B> {
....
}
(或)
//Use the class A, instead of generic type Ta, as base class
public class C<Ta extends A, Tb extends B> extends A {
....
}
我必须打破一些Java规则,但无法识别
答案 0 :(得分:0)
这是不可能的,因为D的超类的超类是“通用的” 并且不允许使用通用的超级类型!这是允许的:
public class C<B extends WhatElse> extends ArrayList<B>{
因为超类显然位于java.lang包中,所以你只给Superclass一个“自己的”泛型参数。
而java需要一个清晰的结构来编译类!
例如:您应该覆盖哪些方法?
答案 1 :(得分:0)
这一行的一些信息:public void function showdialog() {
Toast.makeText(getBaseContext(), "Total Pending Notifications: " + pen_notifs, Toast.LENGTH_SHORT).show();
progressbar.setVisibility(View.VISIBLE);
}
永远不会奏效!
您无法生成也不能使用Tb[] ret = new Tb[0];
的Generic Arrays!