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

Ksh*_*rma 40 groovy

如何在groovy中指定字符文字,因为字符串中的'a'和"a"都会产生?

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

Ksh*_*rma 55

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

'a' as char
Run Code Online (Sandbox Code Playgroud)

见讨论这里的Groovy的buglist.

  • 该帖子应该被接受答案. (3认同)

tim*_*tes 21

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

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()
    }
}
Run Code Online (Sandbox Code Playgroud)

(为长期的例子道歉,但我有脑冻结,并且想不到一个不同的标准java函数需要a char);-)

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

  • `new Character(char)` 是一个采用 `char` 的好例子;) (2认同)

And*_*eim 6

在 Groovy 中可以通过三种方式使用字符字面量:

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 */ 
Run Code Online (Sandbox Code Playgroud)

如果将像 'c' 这样的字符串字面量分配给变量,Groovy 会隐式地进行转换(请参阅 /* 1 * /)。如果你想使用没有变量的字符串文字,你必须使用 ...as char... (see /* 2 * /) 或 ...(char)... (see /* 3 * / )。

在不强制转换的方法中使用 char 文字是不可能的,因为 Groovy 只有必须强制转换为 char 的字符串文字。

println Character.getNumericValue('c') // compile error
Run Code Online (Sandbox Code Playgroud)