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

时间:2014-01-07 11:38:54

标签: groovy

如何在groovy中指定字符文字,因为“a”和“a”都会在字符串中生成?

我不想仅为此目的声明一个字符变量。

4 个答案:

答案 0 :(得分:53)

使用as关键字是在Groovy中创建字符文字的方法。

'a' as char

请参阅Groovy的bug列表中的讨论here

答案 1 :(得分:19)

如果这是一个变量,你也可以定义类型,所以:

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函数; - )

这也违背了问题的第二行,但我认为我会将其添加为完整性

答案 2 :(得分:1)

有三种方法可以在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 * / )。

由于Groovy只有String文字必须被转换为char,因此无法在不转换它们的方法中使用char文字。

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

答案 3 :(得分:0)

这个回应相当晚!但只是偶然发现它并希望补充一些说明。

更准确的答案与Java不同,Groovy没有字符文字,但您可以将字符串强制转换为字符。文字是一个完全按照它来解释的值,并且类型转换的必要性表明它不是真正的文字。

示例:

ConstraintSet.PARENT_ID

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

示例:

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