Java中的$符号是什么?请查看下面的Java代码
我搜索了所有地方,试图找出val$editorkit或下面的$符号是什么意思,但没有运气…请帮助Java中的$符号是什么?请查看下面的Java代码,java,Java,我搜索了所有地方,试图找出val$editorkit或下面的$符号是什么意思,但没有运气…请帮助 private synchronized void updateHtmlEditor(HTMLEditorKit editorkit, StringReader reader) { Runnable runnable = new Runnable(editorkit, reader) { public void run() { try {
private synchronized void updateHtmlEditor(HTMLEditorKit editorkit, StringReader reader)
{
Runnable runnable = new Runnable(editorkit, reader)
{
public void run() {
try {
this.val$editorkit.read(this.val$reader, LinkParser.this.htmlViewEditor.getDocument(), LinkParser.this.htmlViewEditor.getDocument().getLength());
} catch (IOException ex) {
Logger.getLogger(LinkParser.class.getName()).log(Level.SEVERE, null, ex);
} catch (BadLocationException ex) {
Logger.getLogger(LinkParser.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
SwingUtilities.invokeLater(runnable);
}
它并不意味着什么特别的东西——它只是一个构成名字一部分的字母,就像它前面的
l
或后面的e
有关名称中允许和不允许的内容的完整详细信息,请参阅上的JLS部分。允许在变量名称中使用美元符号,但按照惯例不使用美元符号。看看这里
我想我们真的不知道,因为您没有提供变量声明,但是在Java中,
$
可以是变量名的一部分,例如,您可以这样做:
String str$rr = "Hello";
System.out.println(str$rr);
类似的东西将打印
Hello
Java编译器使用$sign来生成内部类、合成字段和方法的名称。它对Java源代码中的标识符有效,但不鼓励使用
您显示的代码看起来像是匿名内部类的反编译代码。方法中的匿名Runnable
实现updateHtmlEditor
访问其周围方法的参数。为了使访问成为可能,需要声明参数final
。在Java字节码中,匿名类有三个最终实例属性,this$0
包含外部实例LinkParser.this
,val$editorkit
和val$reader
包含外部方法参数,以及一个具有三个参数的构造函数,该构造函数将其参数分配给属性
还要注意,LinkParser.this.htmlViewEditor
是对外部类LinkParser
属性的引用。在这个示例中,对外部实例LinkParser的显式引用。这个可以省略
原始源代码如下所示:
private synchronized void updateHtmlEditor(final HTMLEditorKit editorkit, final StringReader reader)
{
Runnable runnable = new Runnable()
{
public void run() {
try {
editorkit.read(reader, htmlViewEditor.getDocument(), htmlViewEditor.getDocument().getLength());
} catch (IOException ex) {
Logger.getLogger(LinkParser.class.getName()).log(Level.SEVERE, null, ex);
} catch (BadLocationException ex) {
Logger.getLogger(LinkParser.class.getName()).log(Level.SEVERE, null, ex);
}
}
};
SwingUtilities.invokeLater(runnable);
}