Java 我应该如何对本例中给出的嵌套类进行分类?
我正在学习ThreadLocal课程,发现了下面的示例Java 我应该如何对本例中给出的嵌套类进行分类?,java,Java,我正在学习ThreadLocal课程,发现了下面的示例 public class UniqueThreadIdGenerator { private static final AtomicInteger uniqueId = new AtomicInteger(0); private static final ThreadLocal < Integer > uniqueNum = new ThreadLocal < Integer > () {
public class UniqueThreadIdGenerator {
private static final AtomicInteger uniqueId = new AtomicInteger(0);
private static final ThreadLocal < Integer > uniqueNum =
new ThreadLocal < Integer > () {
@Override protected Integer initialValue() {
return uniqueId.getAndIncrement();
}
};
public static int getCurrentThreadId() {
return uniqueId.get();
}
} // UniqueThreadIdGenerator
公共类UniqueThreadIdGenerator{
私有静态最终AtomicInteger uniqueId=新的AtomicInteger(0);
私有静态最终线程本地uniqueNum=
新的ThreadLocal(){
@重写受保护的整数初始值(){
返回uniqueId.getAndIncrement();
}
};
公共静态int getCurrentThreadId(){
返回uniqueId.get();
}
}//UniqueThreadIdGenerator
想知道上面创建的ThreadLocal类是否应归类为内部类/匿名类?不确定。它是匿名的,因为它没有名字。嗯,无论如何,这不是一个用代码显式创建的,但这不是重点。这是一个
ThreadLocal
一个类是在另一个类声明中使用class
关键字声明的类。例如,Bar
是下面的Foo
的一个内部类:
class Foo {
int a;
boolean b;
class Bar {
String s;
}
}
嗨,Matt,根据匿名类的定义,它们只能使用一次,而且没有名字。但在这里,我可以用uniqueNum变量命名这个类(通过它的另一种方式),我们可以多次引用这个类,引用uniqueNum
uniqueNum
不是一个类。它是一个匿名类的实例。+1表示JVM没有匿名类,它们都有一个名称。如果内存正确,它可能类似于UniqueThreadIdGenerator$1
。甚至会生成一个具有该名称的类文件。