【问题标题】:Is it possible to declare a variable without using "new" like "String" class是否可以在不使用“新”之类的“字符串”类的情况下声明变量
【发布时间】:2015-06-25 22:40:26
【问题描述】:

我想实现这样的目标。像那些原始数据类型一样声明和初始化一个变量。(不必使用 new 关键字)

MyClass myInstance = 123;

类似于字符串。只有 "String" 类型可以做到这一点,它也是一个类!

String myString = "A string!";

我想要一种不使用new 的方法来声明一些变量,例如new MyClass(123)

谢谢!

【问题讨论】:

  • 声明它们没有新的,是的,初始化,另一方面...
  • 你的问题我看了几遍就可以理解了,建议你复习一下你的语法或者多加几句,把你想说的说清楚:)
  • 你可以定义一个创建对象的方法。然后你可以说MyClass object = createMyClass(123) 而不是MyClass object = new MyClass(123),但在大多数情况下这可能不是一个改进。
  • 字符串很特殊,因为 JVM 为您使用 new。原始包装器(整数等)很特殊,因为编译器会为您调用 valueOf
  • 您对“声明变量”和“创建对象”之间的区别感到困惑。你可以做任何一个而不做另一个。但是new是用来创建对象的,不是用来声明变量的。

标签: java class variables instance declaration


【解决方案1】:

123 是一个数字,myInstance 是一个对象,它们不兼容,因此您不能将number(或string,或boolean)分配给@987654326 的变量@ 类型。

未来唯一可行的方法是如果 Java 允许 operator overloading(例如 C++),现在您需要坚持使用 myInstance = new MyClass(123)

【讨论】:

    【解决方案2】:

    你不能使用自定义类来做到这一点。

    支持这种实例化的唯一类是String 和原始类型的包装类(IntegerBoolean 等)。

    如果您使用反射,您可以创建没有“new”的自定义类的实例,但是您将使用 Class 类的 newInstance() 方法,这似乎不是您希望实现的.

    【讨论】:

      猜你喜欢
      • 2016-12-10
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 2022-11-20
      相关资源
      最近更新 更多