为什么我不能内联创建一个新的Java数组?

14 浏览
0 Comments

为什么我不能内联创建一个新的Java数组?

为什么第一个能够运行而第二个不能?\n1) 正确\n

String[] foo = {"foo"};
bar.setArray(foo);

\n2) 错误\n

bar.setArray({"foo"});

\n有没有一种快速的方式在一行内创建一个String[]?

0
0 Comments

为什么我不能在Java中内联创建一个新的数组?

有时候,在Java中创建一个新的数组是很常见的操作。然而,有些情况下,我们可能会遇到一个问题:无法在代码中直接内联创建一个新的Java数组。这个问题的出现可能是由于Java语言的一些限制所导致的。

为了解决这个问题,我们可以使用以下方法来创建一个新的Java数组:

代码示例:

bar.setArray(new String[] {"foo"});

以上代码将创建一个新的String类型的数组,并将其作为参数传递给一个名为"bar"的对象的setArray()方法。通过这种方式,我们可以绕过无法直接内联创建数组的限制,并成功地创建一个新的数组。

总结起来,尽管在Java中无法直接内联创建新的数组,但我们可以通过将数组作为参数传递给对象的方法来间接实现这一目的。这种方法可以帮助我们解决无法直接内联创建新的数组的问题。

0
0 Comments

在Java中,我们经常需要创建新的数组。然而,在某些情况下,我们无法直接在代码中创建新的Java数组。这篇文章将探讨为什么会出现这个问题以及解决方法。

在上面的代码中,我们尝试使用以下方式创建一个新的Java数组:bar.setArray(new String[] {"foo"});。然而,这种方式在Java中是不可行的。

事实上,Java曾计划在J2SE 5.0版本中允许在代码中创建新的Java数组,而不需要使用new String[]。然而,最终采用了可变参数(varargs)的方式来解决这个问题。通过使用可变参数,我们可以稍微修改setArray方法的声明,在[]的位置使用...,并且省略new String[] { }

以下是修改后的setArray方法的声明示例:

public final class Bar {
    public void setArray(String... array) {
    [...]
}

现在,我们可以直接在代码中使用以下方式创建新的Java数组:bar.setArray("foo");。这种方式更加简洁和方便。

我们无法在代码中直接创建新的Java数组的原因是因为Java语言设计者在J2SE 5.0版本中选择了使用可变参数(varargs)的方式来解决这个问题。通过使用可变参数,我们可以省略new String[] { },从而简化代码。现在,我们可以直接在代码中使用bar.setArray("foo");来创建新的Java数组。这种方式更加简洁和方便。

0
0 Comments

为什么不能在Java中内联创建新的数组?

当我们尝试在Java中内联创建新的数组时,会遇到无法创建的问题。例如,我们尝试使用以下语法来创建一个新的数组:

bar.setArray(new String[] { "foo" });

这种语法是必需的,因为Java不希望隐含数组类型。通过使用数组初始化的格式,数组类型可以由被赋值变量的类型来明确定义。然而,在内联的情况下,数组类型无法被推断出来。

那么为什么Java不允许在内联中创建新的数组呢?原因是Java设计者希望尽可能地避免类型歧义和错误。如果允许在内联中创建新的数组,那么编译器将无法确定数组的类型,这可能导致潜在的错误和混淆。

然而,虽然不能在内联中创建新的数组,但我们仍然可以通过其他方式来达到相同的目的。例如,我们可以先创建一个数组变量,然后将其赋值给需要的地方。以下是一个示例:

String[] newArray = { "foo" };
bar.setArray(newArray);

在这个示例中,我们首先创建了一个新的数组变量newArray,并将其初始化为{ "foo" }。然后,我们将newArray赋值给需要的位置,通过这种方式实现了内联创建新数组的效果。

总结起来,Java不允许在内联中创建新的数组,是为了避免类型歧义和错误。然而,我们仍然可以通过先创建一个数组变量,然后赋值给需要的地方来实现相同的目的。这种方法虽然需要多一步操作,但可以确保代码的可读性和类型安全。

0