// Without reflectionFoofoo=newFoo();foo.PrintHello();// With reflectionObjectfoo=Activator.CreateInstance("complete.classpath.and.Foo");MethodInfomethod=foo.GetType().GetMethod("PrintHello");method.Invoke(foo,null);
// Without reflectionFoofoo=newFoo();foo.hello();// With reflectionObjectfoo=Class.forName("complete.classpath.and.Foo").newInstance();// Alternatively: Object foo = Foo.class.newInstance();Methodm=foo.getClass().getDeclaredMethod("hello",newClass<?>[0]);m.invoke(foo);
// Without reflection$foo=newFoo();$foo->hello();// With reflection$reflector=newReflectionClass('Foo');$foo=$reflector->newInstance();$hello=$reflector->getMethod('hello');$hello->invoke($foo);// using callback$foo=newFoo();call_user_func(array($foo,'hello'));// using variable variables syntax$className='Foo';$foo=new$className();$method='hello';$foo->$method();
# without reflectionobj=Foo()obj.hello()# with reflectionclass_name="Foo"method="hello"obj=globals()[class_name]()getattr(obj,method)()# with evaleval("Foo().hello()")
الاستخدام
يستخدم عادة لاختبار النظام وسير عمله كما يستخدم أيضا في رصد مكان الخلل في حالة وجوده ويمكن ملاحظة أن أكثر مستعملي هذه الخاصية هم القراصنة فهم يستخدمونها لرصد الثغرات