是否可以创建类,例如第二个参数是值? 构造函数看起来像这样:
FancyClass<Integer, 1> myFancyClass = new FancyClass<>();
答案 0 :(得分:6)
没有。泛型用于类型而非文字值。
我不知道你要做什么,但如果你的代码背后有一些实际的想法,你可以用
轻松实现它。public class FancyClass<T> {
T myVal;
public FancyClass(T val) {
myVal = val;
}
}
FancyClass<Integer> myFancyClass = new FancyClass<>(1);
答案 1 :(得分:1)
没有。无论如何,这样做没有逻辑。来自维基百科:
泛型是通用编程的工具,它在2004年在J2SE 5.0中添加到Java编程语言中。它们允许类型或方法对各种类型的对象进行操作,同时提供编译时类型安全性。
一个小例子:
班级Lunchbox
代表一个午餐盒,里面的盒子分成两个不同的容器。午餐盒中的每个“容器”可以包含一堆物品,但这些物品只能是一种(相同)类型。
如果没有泛型,我们必须为容器的两侧预定义2种类型。但是让我们说我们想要这样做,这样每个午餐盒都可以有不同类型的物品。那是我们需要泛型的时候:
public class Lunchbox<V1, V2>
现在在LunchBox类中(并且只在LunchBox类中),您可以访问两种类型:V1
和V2
。他们像普通班一样被处理。
V1 objectOfTypeV1 = ...; //I can even declare variables with that type.
现在我们可以创建多种午餐盒:
Lunchbox<String, Integer> lunchbox1 = new Lunchbox<>();//Contains strings and integers
Lunchbox<Foo, Bar> lunchbox2 = new Lunchbox<>();//Contains Foos and Bars
LunchBox<LunchBox<Foo, Bar>, Integer> lunchbox3 = new LunchBox<>(); //Contains lunchboxes (containing Foos and bars) and integers
对于你的问题:如果我们将一个值作为泛型类,那就没有任何意义了。让我们继续Lunchbox
课程 - 当没有这样的东西时,我们的午餐盒怎么能拿着1型?你不能宣布......
1 object = new 1();
那不是一个班级。这是一个价值。我不明白为什么你想把一个值放在泛型中,它没有意义。希望我帮忙。
万一你不明白这里的任何内容,这里有一个链接到Oracle,他们有关于泛型的教训,为什么要使用它们:Click here.