这可能是重复的,但“as”对谷歌来说是一个令人难以置信的硬关键字,即使 SO 忽略“as”作为查询的一部分。
所以我想知道如何实现一个自反地支持“as”的类。对于示例类:
X类{ 私人价值 公共 X(def v) { val=v } 公共asType(C类){ if (c == Integer.class) 将 val 作为整数返回 如果(c == String.class) 将 val 作为字符串返回 } }
这允许类似:
new X(3) as String
工作,但无助于:
3 as X
我可能必须以某种方式附加/修改 String 和 Integer 上的“asType”,但我觉得这样的任何更改都应该仅限于“X”类...... X 类是否可以实现如下方法:
X fromObject(object)
或者以某种方式从 X 中修改 String/Integer 类。这似乎很难,因为在实际使用 X 之前它不会在 X 中执行任何代码......如果我第一次使用 X 是“3 as X”,X 会得到在 Groovy 尝试调用之前覆盖 Integer 的 asType 的机会是?