For example, in Haxe I can create strictly typed variables:
var a:Float = 1.1;
or var b:String = "hello"
and also dynamic, if needed:
var d:Dynamic = true;
d = 22;
d = "hi";
How do I create this kind of variables in Java?
For example, in Haxe I can create strictly typed variables:
var a:Float = 1.1;
or var b:String = "hello"
and also dynamic, if needed:
var d:Dynamic = true;
d = 22;
d = "hi";
How do I create this kind of variables in Java?
You can use Object
Object d = true;
d = 22;
d = "hi";
and you can use instanceof
operator to check which type of data d
is holding
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
instanceof
is a code smell, usually wafting from a flawed type analysis, and tends to create messy, bug-ridden code unless you know what you're doing. –
Partlet dynamic
. That is, d.foo()
would check at runtime that d
has a foo
method. –
Timorous Object
strategy described here creates more problems than it solves. You can do what's necessary using generics and run-time type tokens without sacrificing type orientation. This is not a good answer; in fact quite the opposite. –
Partlet You could look at mixing in the groovy language which runs on the JVM. This has type inferrance
Dynamic typing is evil so Java eschewed it. Like Swift and C#, Java is strongly typed, which leads to safer and cleaner code. So give in to the Dark Side and put aside your rebel ways. Embrace the Force of type-oriented programming. You'll be the better for it.
dynamic
for dynamic typing. It's useful in some specific scenarios like JSON and interacting with COM. –
Timorous dynamic
beautifully allows me to locally bypass the type system to deal with this. There are other solutions, but all of them are uglier and hackier. I wondered how would I have fixed this in Java, found this answer... and now I'm so glad I'm doing this in C#! Funny how limitations can be praised as features. That won't help Java improve. –
Cortege © 2022 - 2024 — McMap. All rights reserved.
Object
I think is what you are looking for. – Multiform