Java 类抽象和泛型

Java 类抽象和泛型,java,generics,Java,Generics,我需要扩展一个我无法修改的抽象类: public abstract class CustomField<T> extends AbstractField<T> implements HasComponents { // some code @Override public abstract Class<? extends T> getType(); // some code } public抽象类CustomField扩展

我需要扩展一个我无法修改的抽象类:

public abstract class CustomField<T> extends AbstractField<T> implements HasComponents {
    // some code

    @Override
    public abstract Class<? extends T> getType();

    // some code
}
public抽象类CustomField扩展了抽象字段实现了组件{
//一些代码
@凌驾

公共抽象类您可以
返回Class.Class.cast(HashSet.Class);

它将编译,但会给您一个未检查的分配警告。

解释 你实际上所做的与此相当

public class VerticalCheckBoxSelect<T> extends CustomField<Set> {

    @Override
    public Class<? extends Set> getType() {
        return ???;
    }
}

@SotiriosDelimanolis我担心
return???;
是不可编译的
类型虽然是泛型的,但实际上不能与嵌套泛型一起工作。您需要一个未选中的cast。例如
return(类由于类型擦除,我认为这是不可能的。也许这是一个。解释一下你想要实现什么。我们可以告诉你什么是可编译的,但要告诉你什么是正确的,我们需要更多的信息。方法实际应该返回什么,约束是什么,契约一般是什么?最后我使用了
return Class.Class.cast(Set.Class);
但我认为您的解决方案是最干净的。
public class VerticalCheckBoxSelect<T> extends CustomField<Set> {

    @Override
    public Class<? extends Set> getType() {
        return ???;
    }
}
public class VerticalCheckBoxSelect<T> extends CustomField<Set<T>> {

    @Override
    public Class<? extends Set<T>> getType() {
        @SuppressWarnings("unchecked")
        Class<Set<T>> r = (Class) Set.class;
        return r;
    }
}
public class VerticalCheckBoxSelect<T> extends CustomField<Set<T>> {

    @Override
    public Class<? extends Set<T>> getType() {
        @SuppressWarnings("unchecked")
        Class<Set<T>> r = (Class) HashSet.class;
        return r;
    }
}