【问题标题】:Is there a way to name an object with the value of the String parameter a method has? [duplicate]有没有办法用方法具有的 String 参数的值来命名对象? [复制]
【发布时间】:2020-06-07 09:50:58
【问题描述】:

我已经声明了一个 Scanner 对象,我想要一个设置 Scanner 名称的方法。我想到了这样的事情:

public static void ScannerSetUp(String ScannerName) {
        Scanner ScannerName = new Scanner(System.in);
    }

但我收到一条消息说变量已在范围中定义。有人知道怎么做吗?

谢谢。

【问题讨论】:

  • 您正在使用相同的参数名称“ScannerName”作为方法主体中的本地变量。因此,Java 编译器无法将这两个变量名彼此分开。因此,您应该重命名这些变量名之一
  • 但这不会设置我可以用来调用扫描仪的变量名称,并且该方法将无用。
  • 在我看来,您尝试做的事情完全没有意义。您命名一个变量,以便该名称是相关的,并可能在阅读代码时为您自己和其他人解释该变量的使用。在运行时为变量指定特定名称是没有意义的,对任何人都没有用。
  • 根本没有办法命名一个对象,更不用说你需要了。您在寻找地图吗?
  • 显然您想将对象的名称设置为在运行时确定的名称。但是,在这种情况下,没有编译时元素可以使用该名称。因此,如果您设法在运行时为该对象命名,那么该名称将用于什么?

标签: java string parameters scope java.util.scanner


【解决方案1】:

在java中,当你在方法参数中定义了一些变量时(这些变量也是局部变量,但如果你想更具体一些,你可以将这些变量称为参数化变量或参数)或在方法中我们将它们称为局部变量. 所以这些变量的生命周期只在作用域内(作用域是指它们被包围的最接近的花括号)所以在这里你试图在同一个作用域内定义两个同名的局部变量,所以这就是你得到编译时错误的原因。

解决方案: 但是关于你正在尝试的它是完全没用的,因为你试图在运行时分配新的变量名它是完全没用的,我认为它不可能像不使用动态变量的 java 语言那样做。

最佳实践:尝试使用驼峰式大小写来定义变量---->scannerName 会更好。

【讨论】:

    猜你喜欢
    • 2010-09-14
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    • 1970-01-01
    相关资源
    最近更新 更多