【问题标题】:Understanding Java new Class[] array and implementation理解 Java new Class[] 数组和实现
【发布时间】:2017-07-17 00:07:48
【问题描述】:

Java入门

谁能解释一下这里发生了什么

protected Class<?>[] getServletConfigClasses() {
    // TODO Auto-generated method stub
    return new Class[] {
            WebApplicationContextConfig.class
    };
}

我的理解是,这是一个期望其返回为未知类型的 Class 对象数组的方法

但是回报是什么? 不带构造函数的匿名Class对象数组的实例化同时实现块?

进一步阅读的名称是什么,我似乎找不到这个主题区域?

【问题讨论】:

标签: java arrays class generics


【解决方案1】:

没有匿名的 Class 对象。 Class 是一个与任何其他类一样的 java 类,但它的名称肯定会让 Java 初学者感到困惑。

声明

return new Class[] {
            WebApplicationContextConfig.class
    };

等价于

Class [] result = new Class[1];
result[0] = WebApplicationContextConfig.class;
return result;

WebApplicationContextConfig.class 被称为class literalhere 是关于它们的一些讨论。

【讨论】:

  • 是的,这是有道理的,就像 'new String[]{"foo", "bar"};'正在声明一个 String 数组并同时用值对其进行初始化。我猜“类”让我失望了。干杯
  • @succeed:没错。良好的编码,
【解决方案2】:

它是一个使用默认值声明的数组。在 Java 中,它是创建数组的简写方式。

String[] names = {"Arvind","Aarav"}; // initialization

现在重新分配一个全新的数组。

names = new String[]{"Rajesh","Amit","Mahesh"}; //re-initalization

方法也一样,比如返回星期几

public String[] weekdays(){
    String[]days={"Sun","Mon","Tue"};
    return days;
}

public String[] weekdays(){
    return new String[]{"Sun","Mon","Tue"};
}

现在关于Class[],对于Class 类型,可能的值是nullSomeClassName.class

Class stringClass = String.class;
Class[] moreClasses = {Long.class, Boolean.class, java.util.Date.class};

【讨论】:

    【解决方案3】:

    它只是声明一个Class 的数组并用一个元素对其进行初始化(WebApplicationContextConfig 的类定义)

    【讨论】:

      【解决方案4】:

      是通配符类型的数组。更多信息请见this

      【讨论】:

        【解决方案5】:

        这是一个数组初始化器。当你说

        new Something[] { x1, x2, x3 }
        

        它创建Something 类的新数组,并将值初始化为您在花括号中告诉它的任何值。新数组的长度就是值的个数。

        我认为您可能会将其与非常相似的语法混淆:

        new Something() { class declarations, method overrides, etc. }
        

        这个创建了Something 的匿名子类,它被大量用于创建实现接口的匿名子类。它与数组初始值设定项语法一点关系都没有,尽管外观非常接近。

        【讨论】:

          猜你喜欢
          • 2016-10-04
          • 2014-11-18
          • 1970-01-01
          • 2015-11-30
          • 1970-01-01
          • 1970-01-01
          • 2017-05-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多