【问题标题】:Using generics with com.sun.codemodel在 com.sun.codemodel 中使用泛型
【发布时间】:2013-03-30 23:05:34
【问题描述】:

使用com.sun.codemodel,我想生成一个通用的LinkedList 字段。我可以使用以下代码创建一个原始字段:

JDefinedClass masterClass;
String detailName;
JDefinedClass detailClass;
JFieldVar detailField = masterClass.field(JMod.PRIVATE, LinkedList.class, detailName);

但我找不到创建泛型类型为detailClass 的LinkedList 的方法。

【问题讨论】:

  • 你有一个错字:masterClass 在一种情况下,masterClazz 在另一种情况下。 (切题:为什么@#$@#$ 每个人都必须使用带有故意拼写错误的“clazz”,而不是像“cl”或“c​​lass1”这样不那么刺眼的东西,甚至只是“class”)在您的情况下,它是诸如“masterClass”或“detailClass”之类的标识符的一部分)

标签: java code-generation sun-codemodel


【解决方案1】:
JClass detailClass = codeModel.ref(String.class);
String detailName = "myLinkedListField";
JClass rawLLclazz = codeModel.ref(LinkedList.class);
JClass fieldClazz = rawLLclazz.narrow(detailClass);
JFieldVar detailField = def.field(JMod.PRIVATE, fieldClazz, detailName);

【讨论】:

  • 谢谢,这行得通。我以某种方式浏览了narrow 的文档,因为它看起来像javax.rmi.PortableRemoteObject.narrow 中的类型转换。
猜你喜欢
  • 2021-09-21
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-11
  • 1970-01-01
相关资源
最近更新 更多