ClassTreeIdRegistry.java
net.minecraft.util.ClassTreeIdRegistry
信息
- 全限定名:net.minecraft.util.ClassTreeIdRegistry
- 类型:public class
- 包:net.minecraft.util
- 源码路径:src/main/java/net/minecraft/util/ClassTreeIdRegistry.java
- 起始行号:L6
- 职责:
TODO
字段/常量
-
NO_ID_VALUE- 类型:
int - 修饰符:
public static final - 源码定位:
L7 - 说明:
TODO
- 类型:
-
classToLastIdCache- 类型:
Object2IntMap<Class<?>> - 修饰符:
private final - 源码定位:
L8 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
- 无
方法
下面的方法块按源码顺序生成。
public int getLastIdFor(Class<?> clazz) @ L10
- 方法名:getLastIdFor
- 源码定位:L10
- 返回类型:int
- 修饰符:public
参数:
- clazz: Class<?>
说明:
TODO
public int getCount(Class<?> clazz) @ L28
- 方法名:getCount
- 源码定位:L28
- 返回类型:int
- 修饰符:public
参数:
- clazz: Class<?>
说明:
TODO
public int define(Class<?> clazz) @ L32
- 方法名:define
- 源码定位:L32
- 返回类型:int
- 修饰符:public
参数:
- clazz: Class<?>
说明:
TODO
代码
public class ClassTreeIdRegistry {
public static final int NO_ID_VALUE = -1;
private final Object2IntMap<Class<?>> classToLastIdCache = Util.make(new Object2IntOpenHashMap<>(), map -> map.defaultReturnValue(-1));
public int getLastIdFor(Class<?> clazz) {
int id = this.classToLastIdCache.getInt(clazz);
if (id != -1) {
return id;
} else {
Class<?> superclass = clazz;
while ((superclass = superclass.getSuperclass()) != Object.class) {
int newId = this.classToLastIdCache.getInt(superclass);
if (newId != -1) {
return newId;
}
}
return -1;
}
}
public int getCount(Class<?> clazz) {
return this.getLastIdFor(clazz) + 1;
}
public int define(Class<?> clazz) {
int id = this.getLastIdFor(clazz);
int nextId = id == -1 ? 0 : id + 1;
this.classToLastIdCache.put(clazz, nextId);
return nextId;
}
}引用的其他类
- Util
- 引用位置:
方法调用 - 关联成员:
Util.make()
- 引用位置: