|
|
1
4
正如其他人所说,没有真正的方法可以做到这一点……我还没有见过支持它的预编译程序。至少可以说,语法会很有趣。即使在您的示例中,它也只能覆盖一小部分潜在的反射可能性,用户可能希望这样做,因为它不会处理接受参数的非标准访问器或方法等。 即使在编译时无法检查,如果希望坏代码尽快失败,那么一种方法是在类初始化时解析引用的方法对象。 假设您有一个实用程序方法来查找可能引发错误或运行时异常的方法对象:
然后在类中,使用常量预解析要使用的方法:
至少在第一次加载MyClass时它会失败。 我经常使用反射,尤其是bean属性反射,并且我刚刚习惯了在运行时延迟异常。但是,由于其他各种原因,这种风格的bean代码往往很晚才出错,而且非常动态。对于介于两者之间的某件事,上述内容会有所帮助。 |
|
|
2
3
语言里没有任何东西 然而 但是,我相信Java 7的闭包提议的一部分包括方法文本。 恐怕我没有别的建议。 |
|
|
3
2
Java错过了语法糖做一些不错的
|
|
|
4
2
退房 http://jodd.org/doc/methref.html . 它使用jodd代理库(proxetta)来代理您的类型。不确定它的性能特征,但它确实提供了类型安全性。
例如:假设
API比上面的例子更多: http://jodd.org/api/jodd/methref/Methref.html |
|
|
5
1
首先,反思 是 类型安全。它只是动态类型化,而不是静态类型化。 所以,假设你想要一个 静态类型 相当于反射,理论上的答案是不可能。考虑一下:
我们可以这样做以避免运行时类型异常发生吗?一般来说不是,因为这需要证明
我认为,这个路径块适用于任何方法,您可以将任意Java代码注入到用于从对象的类中反射性地选择方法的逻辑中。 在我看来,目前唯一实用的方法是用生成和编译Java源代码的东西替换反射代码。如果这个过程发生在您“运行”应用程序之前,那么您已经满足了静态类型安全的要求。
如果在编译包含此代码的类之后,
改变
你唯一能确定你能解决的方法
(记录下,如果对一个非反射调用的方法执行此操作,您将得到一个
|
|
|
6
0
在模拟框架的启发下,我们可以想出以下语法:
诀窍是通用声明:
现在,方法的返回类型与数据对象的类型相同,您可以使用代码完成(和静态检查)来访问所有方法,包括getter方法。 作为一个缺点,代码读起来不是很直观,因为对getter的调用实际上没有得到任何东西,而是指示验证器验证字段。 另一个可能的选项是注释数据类中的字段:
然后打电话给:
根据注释选项验证所有字段。 |
|
|
7
0
框架 picklock 允许您执行以下操作:
这与setter和private方法的工作方式类似。当然,这只是一个反射包装器,但异常不会在解锁时发生,而不会在调用时发生。如果您在构建时需要它,您可以编写一个单元测试:
|
|
|
8
0
使用歧管
了解更多信息: type-safe-reflection |
|
|
user29759326 · 如何返回递归函数中的最后一个值? 11 月前 |
|
|
malife89 · 将java中的字符串读取为正确的日期格式 12 月前 |
|
|
Tim · 在java中,有没有更快的方法将字节数组写入文件? 12 月前 |
|
pebble unit · 如何检查以前缀开头、以后缀结尾的属性(不是属性值) 12 月前 |
|
|
rudraraj · java中未声明最终变量 1 年前 |
|
|
Bala Ji · 以下BFS的实施效率如何? 1 年前 |