簡體   English   中英

如何在groovy中指定字符文字?

[英]How to specify character literal in groovy?

如何在groovy中指定字符文字,因為字符串中的'a'和“a”都會產生?

我不想僅為此目的聲明一個字符變量。

使用as關鍵字是在Groovy中創建字符文字的方法。

'a' as char

見討論這里的Groovy的buglist。

如果這是一個變量,你也可以定義類型,所以:

import java.awt.image.*

new BufferedImage( 1, 1, BufferedImage.TYPE_INT_RGB ).with {
    createGraphics().with {

        // Declare the type
        char aChar = 'a'

        // Both ways are equivalent and work
        assert fontMetrics.charWidth( aChar ) == fontMetrics.charWidth( 'a' as char )

        dispose()
    }
}

(對於長期的例子道歉,但我有腦凍結,並且想不到采用char的不同標准java函數);-)

這也與問題的第二行背道而馳,但我認為我會將其添加為完整性

有三種方法可以在Groovy中使用char文字:

char c = 'c' /* 1 */
'c' as char  /* 2 */
(char) 'c'   /* 3 */

println Character.getNumericValue(c)           /* 1 */ 
println Character.getNumericValue('c' as char) /* 2 */ 
println Character.getNumericValue((char) 'c')  /* 3 */ 

如果將一個字符串文字(如'c')賦給變量,Groovy會隱式執行強制轉換(請參閱/ * 1 * /)。 如果你想使用沒有變量的字符串文字,你必須使用...作為char ...(參見/ * 2 * /)或...(char)...(參見/ * 3 * / )。

在沒有強制轉換方法的情況下在方法中使用char文字是不可能的,因為Groovy只有String文字,必須將其轉換為char。

println Character.getNumericValue('c') // compile error

這種反應相當晚! 但只是偶然發現它並希望補充一些說明。

更准確的答案與Java不同,Groovy沒有字符文字,但您可以將字符串強制轉換為字符。 文字是一個完全按照它來解釋的值,並且類型轉換的必要性表明它不是真正的文字。

例子:

assert 'a'.class != Character.class
assert 'a'.class == String.class
assert ('a' as char).class == Character.class
assert ((char)'a').class == Character.class
char A = 'a'; // implicit coercion of string to char
assert A.class == Character.class

相比之下,groovy和Java都支持int,long,double和float的數字文字,但簡稱不支持數字文字。

例子:

assert 42.class == Integer.class
assert 42l.class == Long.class
assert 42f.class == Float.class
assert 42d.class == Double.class
assert (42 as Short).class == Short.class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM