发布日期:2018-03-26
什么java的反射(reflection)+ 查看更多
什么java的反射(reflection)
+ 查看更多
发布日期:2018-03-10 14:08
分类:JAVA
浏览次数:160
什么是反射,并且他有什么用?我对java很感兴趣,但是我认为他和其他语言的原理并没有什么不同
回答:
反射是用于描述可以检查其他代码或者自身的代码的一种机制,比如你有一个未知类型的对象,你想调用一个他的方法,java本身是不支持这种调用的除非你用已知接口确定了对象的类型,但是反射机制可以,检查对象是否有此方法并且调用它。
以下是反射模式的一个简单实现的例子:Method method = foo.getClass().getMethod("doSomething", null); method.invoke(foo, null);
这种机制在测试代码时候最常用。比如你使用JUint4时,将会逐个检查类的方法并且打上@测试注释,然后在运行单元测试的时候调用他们
[你可以查看文档示例了解更多[http://docs.oracle.com/javase/tutorial/reflect/index.html]]
[你可以查看文档示例了解更多[http://docs.oracle.com/javase/tutorial/reflect/index.html]]
最后,这个的思想和其他支持反射的静态语言非常类似(比如C#)。在动态类型语言中,上面描述的用例是不必要的(因为编译器将允许任何对象调用任何方法,如果不存在则在运行时失败),但作为第二种查找以特定方式工作或者被标记的方法时仍然是常见的。