如何在Java中创建动态变量?

sha*_*hal 5 java strong-typing dynamic-typing

例如,在Haxe中,我可以创建严格类型的变量:var a:Float = 1.1;或者var b:String = "hello"如果需要还可以创建动态变量 :

var d:Dynamic = true; d = 22; d = "hi";

如何在Java中创建这种变量?

Pav*_*ngh 12

您可以使用 Object

Object d = true; 
d = 22; 
d = "hi";
Run Code Online (Sandbox Code Playgroud)

您可以使用instanceof运算符来检查d所持有的数据类型

Object d = true; 
System.out.println(d instanceof Boolean); // true
d = 22; 
d = "hi";       
System.out.println(d instanceof Integer); // false
System.out.println(d instanceof String);  // true
Run Code Online (Sandbox Code Playgroud)

The Type Comparison Operator instanceof

  • 使用`instanceof`是一种代码气味,通常是从有缺陷的类型分析中飘散出来,并且除非你知道你在做什么,否则往往会产生混乱的,错误的代码. (2认同)
  • 我希望动态变量能够在运行时解决使用问题,就像 C# 的“dynamic”。也就是说,“d.foo()”将在运行时检查“d”是否有“foo”方法。 (2认同)