黑马程序员技术交流社区
标题:
有关反射的一个小问题
[打印本页]
作者:
梵天的梦
时间:
2014-2-22 11:21
标题:
有关反射的一个小问题
import java.lang.reflect.*;
public class ReflectTest {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
//利用反射调用String的charAt方法
String string = "abcde";
Method method = String.class.getMethod("charAt", int.class);
System.out.println(method.invoke(string, 1));
//普通形式调用charAt方法
System.out.println(string.charAt(1));
}
}
今天看了张老师的视频后写了这个关于反射调用类放的例子,有一点不明白想问问大家。
普通形式的调用charAt方法就可以实现的,为什么还用反射呢,而且感觉反射调用方法好繁琐。
作者:
长石
时间:
2014-2-22 11:49
那是因为你了解String 知道它有charAt方法 但如果遇到其他人自定义的类时 你并不了解他内部的方法
就只能通过反射调用的他的方法了
作者:
sgs_gzy
时间:
2014-2-22 12:13
反射就是根据你的类来为你创建对象,如果你想获得这个类中的变量或者是方法的话,这些就要建立一个相应类的实例对象来表示,楼主的两种方式都行,但是如果我要是想获得字符串里其中某个字母,是不是要加特定的if语句来判断,但如果我在类中新建了个对象来修饰该字母,是不是就可以直接调用该对象来获得我想要的那个字母,也不知道说的对不对,我也是初学者,仅供参考!
作者:
也,许。
时间:
2014-2-22 12:13
反射主要使用在框架中,你编好一个程序,但是这个程序中所使用的类不一定就是固定的,可以通过配置文件来修改。这个时候就要使用反射了。
作者:
梵天的梦
时间:
2014-2-22 12:35
也,许。 发表于 2014-2-22 12:13
反射主要使用在框架中,你编好一个程序,但是这个程序中所使用的类不一定就是固定的,可以通过配置文件来修 ...
有点明白了,谢谢了
作者:
skyname
时间:
2014-2-22 12:38
反射的作用------实现框架功能。
要使用别人写好的类,有两中实现方式:一种是,你去调用别人的的类,还有一种是别人的类来调用你的类,不管怎么弄,都是你在调用别人的类,这两种类有区别,一个叫框架,一个叫工具。你在用框架,是框架在调用你的类。框架和工具类的区别:都是别人写的,但是用法不一样,一个是人家调用你,一个是你调用人家。框架就是人家调用你。框架要解决的核心问题是:Java的反射机制是在编译并不确定是哪个类被加载了,而是在程序运行的时候才加载、探知、自审。使用在编译期并不知道的类。这样的特点就是反射。因为在写程序时无法知道要被调用的类名,所以,在程序中,无法直接new某个类的实例对象了,而要用反射方式来做。
例如:跳过编译器,往某个泛型集合中加入其它类型的数据.
ArrayList<String> collection=new ArrayList<String>();
ArrayList<Integer> collection2=new ArrayList<Integer>();
System.out.println(collection.getClass()==collection2.getClass());
//collection2.add("abcde"),不可以
//用反射得到集合,再调用其add()方法即可。
collection2.getClass().getMethod("add",Object.class).invoke(collection2, "abcde");
System.out.println(collection2.get(0));
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2