【问题标题】:Java / Statements containing multiple '.' operatorsJava / 包含多个“.”的语句运营商
【发布时间】:2026-01-30 07:10:02
【问题描述】:

在 Java 中,考虑以下代码:

Vector v = new Vector();
for(int i = 1; i <= 10; i++)
{
    v.addElement(Integer.toString(i));
}
System.out.println(v.elementAt(9).toString());

v.elementAt(9).toString() 这样的Java 语句是否包含多个'.'操作员完全足够好,还是在特定时间段内导致任何特定类型的冲突?

到目前为止,我一直只在括号中保持足够安全,方法是在单个语句周围放掉括号,毕竟根本不会产生任何给定类型的冲突。

(v.elementAt(9)).toString().

到目前为止,在我自己十多年的编程和编码经验中,我从未使用过任何给定类型的模棱两可的陈述。

v.elementAt(9).toString().

【问题讨论】:

  • 1.您不应该使用 Vector(改用 ArrayList)。 2.变量i没有定义在for循环范围之外。 3. 请将您的问题集中在您想要做什么(而不是如何您想要这样做)。
  • 这段代码,不管它包含多少(),对NullPointerExceptionClassCastException都是敏感的,因为它们标记了重复项,解释了如何避免它们。
  • @feelingunwelcome 代码容易受到NullPointerException 的影响并不意味着问题是重复的; OP 似乎很好奇语法是否可以安全使用。
  • @alfasin 写道: 2. 变量 i 未在 for 循环范围之外定义:完全感谢您自己的回复。毕竟,我认为我已经从(v.elementAt(i)).toString()v.elementAt(i).toString() 中删除了我自己编写的代码的关键部分,这是我自己提交的第一次尝试到(v.elementAt(9)).toString()v.elementAt(9).toString() 的尝试。请再试一次!

标签: java object vector tostring getelementbyid


【解决方案1】:

v.elementAt(i).toString() 这样的Java 语句是否包含多个'.'完全足够好,或者它们是否会在特定时间段内引发任何特定类型的冲突?

它们非常好,但有一些警告。如果v.elementAt(i)null,那么调用v.elementAt(i).toString() 将抛出NullPointerException。如果您选择i 作为某个负值或大于Vector 的值,我怀疑ArrayIndexOutOfBoundsException 也会被抛出。您可以将此语法视为函数的组合(从左到右),这与数学中的相反。

在您的具体示例中,此语法在逻辑上是等效的:

(v.elementAt(i)).toString()

【讨论】:

  • @alfasin 写道: 你不应该使用 Vector(使用 ArrayList 代替)。为什么这样?使用 ArrayList 而不是 Vector 真的有什么好处吗?无论如何,无论如何,为了提供以下示例,我只是故意使用 Vector 而不是 ArrayList。
  • 如果vArrayList&lt;Integer&gt;ArrayList&lt;String&gt; 则不需要进行toString() 操作。只是我们可以使用v.get(9) 获取元素。如果vVector&lt;Integer&gt;Vector&lt;String&gt;,也可以这样说。只有当 Collection v 是任何给定原始对象数据类型的模板时,上面的示例无论我上面提到的足够多,都足够合适。
  • 或者,如果v 是一个Vector,那么我们也可以使用相同的例子,而不是调用v.elementAt(9).toString(),如果v 是一个ArrayList,一个任意的模板给定原始对象数据类型。