让Java的反射更得简单

反射对Java开发人员来说是最强大的功能之一了。标准的Java API真的很难使用,尤其是搜索和查询某些特殊的方法的时候。

比如说,我最近在参与的一个项目,要取出一个类的所有返回string,不带参数的,且以to开头的public方法,写出来的代码大概像下面这样:



ArrayList<Method> results = new ArrayList<Method>();
for (Method m : String.class.getDeclaredMethods()) {
if (Modifier.isPublic(m.getModifiers()) &&
m.getReturnType().equals(String.class) &&
m.getParameterCount() == 0 &&
m.getName().startsWith("to")) {
results.add(m);
}
}



因此你可以想像一下,如果有比这还复杂的情况,这段代码最后会成什么样。我找了一遍后发现[url=https://github.com/ronmamo/reflections]Reflections[/url]这个库可以让这样工作变得想当简单。同样的查询用它来写的话会是这样的:



Set<Method> results = getMethods(String.class,
withModifier(Modifier.PUBLIC),
withReturnType(String.class),
withParametersCount(0),
withPrefix("to"));




有个这个库还能进行一些更为复杂的查询。想了解关于它的更多信息的话,它的[url=http://reflections.googlecode.com/svn/trunk/reflections/javadoc/apidocs/index.html?org/reflections/Reflections.html]官方文档[/url]是个不错的选择。希望将来你考虑在Java中进行一些反射相关的操作的话会考虑使用一下这个库。

下下面有些相关的资料链接:

https://github.com/ronmamo/reflections
http://docs.oracle.com/javase/tutorial/reflect/


原创文章转载请注明出处:[url=http://it.deepinmind.com/java/2014/05/25/reflection-java-made-easy.html]http://it.deepinmind.com[/url]

[url=http://java.dzone.com/articles/reflection-java-made-easy]英文原文链接[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值