我到处搜索试图找出val $ editorkit或下面的$符号意味着什么,但没有运气......请帮忙......
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);
}
答案 0 :(得分:15)
这并不意味着什么特别 - 它只是一个构成名称一部分的字母,与之前的l
或之后的e
完全相同。
请参阅Identifiers上的JLS部分,了解有关名称中允许和不允许的内容的完整详细信息。
答案 1 :(得分:4)
我们无法真正告诉我,因为你没有提供变量声明,但在Java中$
可以是变量名的一部分,例如你可以这样做:
String str$rr = "Hello";
System.out.println(str$rr);
这样的内容将打印Hello
。
答案 2 :(得分:3)
Java编译器使用$符号生成内部类,合成字段和方法的名称。它对Java源代码中的标识符有效,但不鼓励。
您显示的代码看起来像匿名内部类的反编译代码。方法Runnable
中的匿名updateHtmlEditor
实现访问其周围方法的参数。为了使访问成为可能,需要将参数声明为final
。在Java字节代码中,匿名类有三个最终实例属性,this$0
包含外部实例LinkParser.this
,val$editorkit
和val$reader
包含外部方法参数,以及一个构造函数三个参数,它们将参数分配给属性。
另请注意,LinkParser.this.htmlViewEditor
是对外部类LinkParser
的属性的引用。在此示例中,可以省略对外部实例LinkParser.this
的显式引用。
原始源代码如下所示:
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);
}
答案 3 :(得分:1)
允许美元符号用变量名称,但按惯例,它不会被使用。看看这里 http://docs.oracle.com/javase/tutorial/java/nutsandbolts/variables.html