我有一个自定义生成器,它只为我的项目中的某些类生成代码。以下代码位于generate
方法的开头,并将我需要处理的所有类放在clazzes
列表中
TypeOracle oracle = context.getTypeOracle();
JClassType markerInterfaceType = oracle.findType(MY_PARENT_CLASS.class.getName());
List<JClassType> clazzes = new ArrayList<JClassType>();
for (JClassType classType : oracle.getTypes()) {
if (!classType.equals(markerInterfaceType)
&& classType.isAssignableTo(markerInterfaceType)) {
clazzes.add(classType);
}
}
这段代码已经一年多没有改变了,但是从上周开始,生成器似乎没有考虑到一些类。
经过一番挖掘,我发现这些类甚至不在返回的列表中oracle.getTypes()
- 那些被忽略的类不是新创建的类(有些几个月没有改变)
- 据我所知,没有办法区分将被任何其他类忽略的类
- 我们的 gwt 版本没有升级(我们中的一些人使用 2.5.0,其他人使用 2.5.1)
- 这些类使用的包也没有升级
oracle.findType(MISSING_CLASS.class.getName())
返回null
- 问题只出现在某些人身上,但不在同一个班级
- 重命名有问题的类似乎可以解决问题
我最好的猜测是我在某个地方遇到了缓存问题,但我不知道去哪里找。