1
与えられる以下のグルービーコード:驚くべき挙動
def engine = new SimpleTemplateEngine()
def propMap = [ URL: "http://stackoverflow.com",URL2: "http://stackoverflow.com"]
def result = engine.createTemplate('''
${URL}
${URL2}
''').make(propMap) as String
println(java.net.URL)
出力(クラスjava.net.URL
として解釈されてしまう
class java.net.URL
http://stackoverflow.com
どういうわけ
URL
ありますGroovyは自動インポートのようですが)、なぜですか?この文脈ではURL
という名前の変数を使用できますか?
URL、String、Fileなどの変数はありません。小文字は問題ありませんが、実際のクラス名をシャドーすると常に問題が発生します –
@tim_yates:名前を避けることは可能ですが、なぜGroovyそんなやり方でそれを解釈する? Javaでは、コーディング規格に準拠していない場合でも、その名前を使用することが可能です...もちろん、Groovyは動的言語であるが、それは、デフォルトでは、そのクラスをインポートしているので、まだそれは – user140547
意外なようです –