Java阴影类型参数吗?我发现自己很难进行测试,因为Java泛型在运行时没有被具体化。
例如,给定以下代码:
public class NestedGeneric<T> {
private InnerGeneric<T> innerGenericInstance;
private static class InnerGeneric<T> {
public T innerGenericField;
}
NestedGeneric() {
innerGenericInstance = new InnerGeneric<T>();
}
}以下两种语句都可以很好地编译:
NestedGeneric<Integer> test1 = new NestedGeneric<Integer>();
NestedGeneric.InnerGeneric<String> test2 = new NestedGeneric.InnerGeneric<String>();当传递一个类型参数并调用它的构造函数时,NestedGeneric是什么?它总是与传递给nestedGeneric的类型参数相同吗?
换句话说,可以将外部类类型参数传递给内部类泛型类型声明吗?
发布于 2015-06-25 14:17:30
这不是阴影。代码中只有一个类型参数,即T参数。因此,内部和外部T是相同的类型参数。
当然,您可以拥有更多的类型参数。
public class NestedGeneric<OUTER_TYPE> {
private static class InnerGeneric<INNER_TYPE> {
public INNER_TYPE innerGenericField;
}
public NestedGeneric() {
InnerGeneric<OUTER_TYPE> innerGenericInstance = new InnerGeneric<OUTER_TYPE>();
InnerGeneric<String> secondInnerGenerics = new InnerGeneric<String>();
}
}INNER_TYPE和OUTER_TYPE是两个不同的类型参数。行InnerGeneric<OUTER_TYPE> innerGenericInstance = new InnerGeneric<OUTER_TYPE>();会说thad innerGenericInstance是由与OUTER_TYPE相同类型的参数化的。但它们不一定是一样的。与secondInnerGenerics变量的情况一样。
https://stackoverflow.com/questions/31052476
复制相似问题