守则:
package com.keyoti.rapidSpell;
import java.util.Comparator;
// Referenced classes of package com.keyoti.rapidSpell:
// RapidSpellChecker
class RapidSpellChecker$CompareL
implements Comparator
{
public int compare(Object a, Object b)
{
return (int)(100D * (suggestionScore2b(topWord, (String)b) - suggestionScore2b(topWord, (String)a)));
}
public void with(String w)
{
topWord = w;
}
private String topWord;
RapidSpellChecker$CompareL()
{
}
}
这是应用程序中的许多类。
$
签到class RapidSpellChecker$CompareL implements Comparator
表示什么?是简单的类名还是具有一定意义?
答案 0 :(得分:5)
我怀疑这是反编译的代码。 (有关详细信息,请参阅底部。)$表示它是RapidSpellChecker
中的嵌套类。所以代码最初看起来像这样:
public class RapidSpellChecker
{
// Other code withing RapidSpellChecker
static class CompareL implements Comparator
{
// Code for compare, with etc
}
}
我已将其显示为 static 嵌套类,因为您显示的代码没有对RapidSpellChecker
实例的任何隐式引用。如果是这样,原始代码将是这样的:
public class RapidSpellChecker
{
// Other code withing RapidSpellChecker
class CompareL implements Comparator
{
// Code for compare, with etc
}
}
在这种情况下,它是内部类。
有关详细信息,请参阅Java tutorial on nested classes。
$字符只能用于机械生成的源代码,或者很少用于访问旧系统上预先存在的名称。
所以这是有效的,只是气馁。
答案 1 :(得分:2)
这是一个嵌套类。当Java编译器使用嵌套类编译一个类时,它会将它们全部分成不同的.class文件。
class A {
class B {
}
}
给出A.class和A $ B.class
答案 2 :(得分:1)
如果需要,可以在变量名中使用$
。在变量名中,它没有特殊意义。
$
通常也用于在使用javac
如果你编译
class A {
class B {
}
}
您将看到A.class已创建且B.class。
为了娱乐和娱乐,您可以在Java中创建令人困惑的“JQuery” - 代码(您需要使用静态导入来使用$
静态方法)。请参阅以下示例:
import static thisPackage.*;
public class $ {
public static $ $(String s) { return new $(s); }
public $ fadeIn(int fade) { return this; }
public $ slideUp(int slide) { return this; }
public $ delay(int ms) { return this; }
public $(String s) { }
public static void main(String[] args) {
$("#foo").slideUp(300).delay(800).fadeIn(400);
}
}
使用下面的DOM库实现它将是一个有趣的项目!