首页 > 解决方案 > 为什么我们需要双重定义从 main 传递到方法的变量?

问题描述

采取以下代码:

public static void print(ArrayList<String> list) {
    for (String word : list) {
        System.out.println( word );
    }
}

public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<String>();
    list.add("Java");
    list.add("Python");
    list.add("Ruby");
    list.add("C++");

    print(list);
}

为什么我们需要在main中将'list'定义为一个ArrayList,然后在方法中的参数中重新定义呢?为什么变量类型不能从 main 传递给方法?有什么办法可以做到这一点?您希望类型在 main 和 method 之间更改的任何示例?

感觉就像不得不两次不必要地执行相同的步骤。

例如,为什么我们不能只使用:

public static void print(list) {
    for (String word : list) {
        System.out.println( word );
    }
}

public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<String>();
    list.add("Java");
    list.add("Python");
    list.add("Ruby");
    list.add("C++");

    print(list);
}

标签: javavariablesmethodsparameters

解决方案


是什么list

public static void print(list) {
    for (String word : list) {
        System.out.println( word );
    }
}

在面向对象编程的上下文中,假设一个外部类想要使用这个方法。它会在这里传递什么?它可以在这里传递什么?它怎么会知道?

从根本上说,您对variablesparameters之间的区别感到困惑。两者都必须是类型化的,因​​为 Java 是一种强类型语言,但两者都不一定相互关联。您可以有一个与稍后声明的变量命名相同的参数以提高可读性,但没有为此设置任何其他地方的强制要求。

为了清楚起见,这里再次使用相同的方法:

public static void print(ArrayList<String> l) {
    for (String word : l) {
        System.out.println( word );
    }
}

参数的名称无关紧要,只要它是typed 即可


推荐阅读