Java 我应该如何对本例中给出的嵌套类进行分类?

Java 我应该如何对本例中给出的嵌套类进行分类?,java,Java,我正在学习ThreadLocal课程,发现了下面的示例 public class UniqueThreadIdGenerator { private static final AtomicInteger uniqueId = new AtomicInteger(0); private static final ThreadLocal < Integer > uniqueNum = new ThreadLocal < Integer > () {

我正在学习ThreadLocal课程,发现了下面的示例

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
。甚至会生成一个具有该名称的类文件。