当前位置: 首页 > 面试题库 >

为什么不能实例化嵌套类的空数组?

张敏达
2023-03-14
问题内容

我似乎在使用[foo]()样式语法实例化嵌套类类型的空数组时遇到问题:

// Playground - noun: a place where people can play

class outsideClass {

}

class Wrapper {
    class InsideClass {
    }
}

var foo = [outsideClass]() // Works fine

// Invalid use of '()' to call a value of non-function type '[Wrapper.InsideClass.Type]'
var bar = [Wrapper.InsideClass]()

这是我误会的东西吗(早在我喝咖啡之前,但我已经查看了发行说明,并且我认为您应该能够引用这样的嵌套类)或Beta 7中的错误?

这可以作为一种解决方法:

var foobar: [Wrapper.InsideClass] = []

问题答案:

这肯定看起来像是编译器中的错误,尤其是 允许 您实例化嵌套类的空数组就好了。它根本不适用于初始化程序语法。

我会提出一个错误。同时,对于遇到问题的任何人,都可以通过使用赋值语法,空数组和变量的指定类(而不是构造函数语法)来解决此问题:

 var foobar: [Wrapper.InsideClass] = []


 类似资料:
  • 但是为什么在下面的情景中允许静态嵌套类对象的实例化呢? 为什么我们可以创建内部类的对象,如果它被标记为静态的?

  • 问题内容: 我已经开始学习用于Android应用程序开发的Java语言。 根据我对静态类的理解,我们无法实例化静态类的对象。 但是,为什么在随后的情况下允许实例化静态嵌套类对象? 如果将内部类的对象标记为静态,为什么我们可以创建它呢? 问题答案: 根据我对静态类的理解,我们无法实例化静态类的对象。 您对“静态类”的含义的理解不正确。基本上, Java中 的“静态类” 是嵌套类,它没有对包含类的实例

  • 定义参数化类时,只能使用固定数量的参数。 但是,如果你想创建一个包含多个值的地图。必须使用映射

  • 问题内容: 这节课: 无法编译: 因为( 根据Java语言规范 Java SE 8 Edition 的 第 8.1.4节“超类和子类”)类将直接依赖于“本身”,因为类直接取决于“ [其] 或子句[…中提到的”的任何类型。 ]作为超类或超接口名称的完全限定形式的限定符。” 但是我真的不明白这里的动机。什么是有问题的依赖关系?是否只是为了与非语言环境保持一致(因此最终将以其自身的词汇包围实例)? 问题

  • 来自JavaScript背景,我发现以下代码有点过于健壮,包含多条语句;我想知道如何简化代码,并在一条语句中完成所有操作。 Student是超类,Friend和Schedule是聚合到超类ArrayList公共成员中的子类(这些不是嵌套类)。这是我当前的代码: 我想知道我是否可以做这样的事情,在一个语句中声明/实例化超类和子类;这可能吗?

  • 问题内容: 我正在使用泛型编写某些东西,令我惊讶的是,我发现这行不通: 那我不能实例化泛型吗?没有任何方法可以做到这一点吗? 问题答案: 是的,这真是令人讨厌。 我使用的解决方法是强制客户端在构造新类时传递类-即 然后您可以使用。