首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于内部类中类型参数的类型声明

基于内部类中类型参数的类型声明
EN

Stack Overflow用户
提问于 2015-06-25 13:56:36
回答 3查看 1.4K关注 0票数 9

Java阴影类型参数吗?我发现自己很难进行测试,因为Java泛型在运行时没有被具体化。

例如,给定以下代码:

代码语言:javascript
运行
复制
public class NestedGeneric<T> {
    private InnerGeneric<T> innerGenericInstance;

    private static class InnerGeneric<T> {
        public T innerGenericField;
    }

    NestedGeneric() {
    innerGenericInstance = new InnerGeneric<T>();
    }
}

以下两种语句都可以很好地编译:

代码语言:javascript
运行
复制
NestedGeneric<Integer> test1 = new NestedGeneric<Integer>();
NestedGeneric.InnerGeneric<String> test2  = new NestedGeneric.InnerGeneric<String>();

当传递一个类型参数并调用它的构造函数时,NestedGeneric是什么?它总是与传递给nestedGeneric的类型参数相同吗?

换句话说,可以将外部类类型参数传递给内部类泛型类型声明吗?

EN

Stack Overflow用户

发布于 2015-06-25 14:17:30

这不是阴影。代码中只有一个类型参数,即T参数。因此,内部和外部T是相同的类型参数。

当然,您可以拥有更多的类型参数。

代码语言:javascript
运行
复制
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_TYPEOUTER_TYPE是两个不同的类型参数。行InnerGeneric<OUTER_TYPE> innerGenericInstance = new InnerGeneric<OUTER_TYPE>();会说thad innerGenericInstance是由与OUTER_TYPE相同类型的参数化的。但它们不一定是一样的。与secondInnerGenerics变量的情况一样。

票数 5
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31052476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档