0

我的语法有一些问题。我到处找,找不到正确的东西(我实际上不知道,要搜索的短语是什么)。所以这就是问题所在。为简单起见,假设我有 4 个类:

A类:

public abstract class A{
}

B类:

public class B extends A{
    //some methods and fields
}

C类:

public class C extends A{
    //some other methods
}

D类:

public class D{
    protected ? value;
}

在这里我有一个问题,因为如果我想定义为?. 我知道一个选项只是写而不是,但我认为这可以更具体,例如像.class D?AA?<T extends A>

这甚至可能吗?

-编辑-

从下面的答案中,我看到这种方法是使用原始类型。但是,任何人都可以确认这样的构造在 java 中不存在吗?您可以创建一个泛型类型的字段T(扩展某个类),但包含该字段的类没有泛型参数T

4

3 回答 3

1

I think you should specific to this value Type at run time .

public class D<T extends A>{
    protected T value;
}

D<B> d =new D<B>();
D<A> d1 = new D<A>();
于 2012-11-30T10:32:46.177 回答
1

使用泛型类,如下所示:

public class D<T extends A> {
    protected T value;
}

MyClass不依赖T于您在上面的评论中假装。您可以在不精确通配符的情况下实例化实例。因此,在编译时T仍会被替换为A这个概念称为:原始类型

更多信息:http ://docs.oracle.com/javase/tutorial/java/generics/rawTypes.html

于 2012-11-30T10:46:00.463 回答
1

-使用Type Parameter

例如:

public class MyClass<T extends A>{

   T value;

}
于 2012-11-30T10:35:11.493 回答