黑马程序员技术交流社区

标题: 反射 [打印本页]

作者: 马蒙蒙    时间: 2011-7-27 19:32
标题: 反射
在反射中使用 getClass()可以得到返回一个对象的运行时类。他是继承自Object类。我想问的是:是不是在用到反射的代码中this.getClass与getClass()可以通用?
作者: 匿名    时间: 2011-7-27 19:37
不行,this代表自己本身~~~
this.getClass(),得到是一个class类型,而我们需要是类的Class类型。
作者: 匿名    时间: 2011-7-27 19:39
this是指当前对象。可以在类里边用来指实例化本类本类的某个对象。
就像常用的this.name = name;
但是不在自己类里this.getClass就不是一个概念了。
另外自己可以在类里写代码的话,意味着就是当前类,还getClass干啥呀
作者: 匿名    时间: 2011-7-27 20:45
不可以
[color=Red]类名.class和实例.getClass()[/color]都是java.lan.Class的对象,前者是静态的,后者是动态的,也就是针对你的类实例来创建的信息,一般情况下使用完全相同,两者的区别在处理反射时就能体现出来,如[code=java]package cn.itcast.heima;
import java.util.*;
import java.lang.reflect.*;

public class CSDN {
    public static void main(String args[]) throws Exception{
        Set s = new HashSet();
        s.add("foo");
        Iterator it = s.iterator();
        Class[] argsClass = new Class[0];
        Method m = Iterator.class.getMethod("hasNext",argsClass);
        System.out.println(m.invoke(it,argsClass));
    }
}[/code]这个可以正常执行[code=java]package cn.itcast.heima;
import java.util.*;
import java.lang.reflect.*;

public class CSDN {
    public static void main(String args[]) throws Exception{
        Set s = new HashSet();
        s.add("foo");
        Iterator it = s.iterator();
        Class[] argsClass = new Class[0];
        Method m = it.getClass().getMethod("hasNext",argsClass);
        System.out.println(m.invoke(it,argsClass));
    }
}[/code]这个就不能正常执行了
作者: 匿名    时间: 2011-7-27 22:42
楼主把你的疑问用代码摆出来,詹季春的代码让我有所启发,觉得大家还有必要多讨论讨论
作者: 匿名    时间: 2011-7-28 10:43
有啥 启发了  能讲讲吗?

用到反射的代码中this.getClass 根本就不能这么用,
要想这样用 也要通过某种方法吧 ,具体是什么方法呢??

楼主把代码粘出来看看
作者: 匿名    时间: 2011-7-28 11:05
标题: 回复 楼主 的帖子
this关键字只能在方法内部使用,表示对“调用方法的那个对象”的引用
this.getClass()??疑问??
作者: 匿名    时间: 2011-7-29 16:01
谢谢各位的回答,集思广益才能学到知识




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2