2017-03-09 28 views
5

例如,在Haxe我可以創建嚴格類型的變量: var a:Float = 1.1;var b:String = "hello"也充滿活力,如果需要的話:如何在Java中創建動態變量?

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

如何創建這樣的在Java中的變量?

+1

'對象'我認爲是你在找什麼。 –

回答

11

您可以使用Object

Object d = true; 
d = 22; 
d = "hi"; 

,您可以使用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 

The Type Comparison Operator instanceof

+2

'instanceof'的使用是一種代碼異味,通常是從一個有缺陷的類型分析中浮現出來,並且除非你知道你在做什麼,否則往往會創建凌亂的,錯誤纏身的代碼。 –

+0

@Lew,你100%正確。但是發佈的anwser重播了這個問題。 –

+0

我期望一個動態變量來解決運行時的用法,比如C#的'dynamic'。也就是說,'d.foo()'會在運行時檢查'd'是否有'foo'方法。 – chris

1

動態類型是邪惡所以Java盡力避免。像Swift和C#一樣,Java是強類型的,這導致更安全和更乾淨的代碼。所以放棄黑暗面,放下你的反叛方式。擁抱面向類型編程的力量。你會更好。

+0

C#具有用於動態輸入的「動態」功能。它在JSON和與COM交互的特定場景中很有用。 – chris

+0

我同意,我避免動態處處可能,我喜歡強類型的方法。我只是需要了解一些特殊情況。 – shal

1

你可以看看在JVM上運行的groovy語言混合。這有類型推理

+0

Java有類型推斷。類型推斷不是動態類型。類型推斷是強打字的一種策略。 –