为什么Java方法有像method().length这样的长度?

问题描述 投票:0回答:1

我不明白这个方法怎么会有长度?方法1().长度。按照同样的逻辑我们可以写 main().length

public class Solution {
    public static void main(String[] args) {
        int stackTraceLength = method1().length;
        System.out.print(stackTraceLength);
        System.out.print(main().length);
    }

    public static StackTraceElement[] method1() {
        return Thread.currentThread().getStackTrace();
    }
}
java stack-trace
1个回答
0
投票

该方法没有长度属性。您调用的方法返回

StackTraceElement[]
,它是一个数组,并且数组具有
length
属性。换句话说,您调用方法
method1()
,它返回一个数组,然后在该数组上调用
length

这与您的代码相同:

StackTraceElement[] elements = method1();
int stackTraceLength = elements.length;

但只是没有中间

elements
变量(也称为 chaining)。

您无法拨打电话

main().length
有两个原因。

  1. 你的代码没有
    main()
    方法,它有
    main(String[])
    方法,所以没有可以调用的方法
  2. 假设您的意思是类似
    main(new String[0]).length
    的内容,那么这是行不通的,因为
    main(String[])
    的返回类型为
    void
    ,这意味着没有返回任何内容,因此没有返回值可以调用
    length
© www.soinside.com 2019 - 2024. All rights reserved.