首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于class.forNname解决方案

2012-03-01 
关于class.forNname我最近在看thinkinjava,里面第11章介绍的东西看起来很吃力,我想问一下,class到底是什么

关于class.forNname
我最近在看think   in   java,里面第11章介绍的东西看起来很吃力,我想问一下,class到底是什么?和String似的,也是一种类型马?这种类型有什么用?

import   java.util.*;

class   Pet   {}
class   Dog   extends   Pet   {}
class   Pug   extends   Dog   {}
class   Cat   extends   Pet   {}
class   Rodent   extends   Pet   {}
class   Gerbil   extends   Rodent   {}
class   Hamster   extends   Rodent   {}

class   Counter   {   int   i;   }

public   class   PetCount   {
    static   String[]   typenames   =   {
        "Pet ",   "Dog ",   "Pug ",   "Cat ",
        "Rodent ",   "Gerbil ",   "Hamster ",
    };
    public   static   void   main(String[]   args)   {
        Vector   pets   =   new   Vector();
        try   {
            Class[]   petTypes   =   {
                Class.forName( "c11.petcount.Dog "),
                Class.forName( "c11.petcount.Pug "),
                Class.forName( "c11.petcount.Cat "),
                Class.forName( "c11.petcount.Rodent "),
                Class.forName( "c11.petcount.Gerbil "),
                Class.forName( "c11.petcount.Hamster "),
            };
            for(int   i   =   0;   i   <   15;   i++)
                pets.addElement(
                    petTypes[
                        (int)(Math.random()*petTypes.length)]
                        .newInstance());
        }   catch(InstantiationException   e)   {}
            catch(IllegalAccessException   e)   {}
            catch(ClassNotFoundException   e)   {}
        Hashtable   h   =   new   Hashtable();
        for(int   i   =   0;   i   <   typenames.length;   i++)
            h.put(typenames[i],   new   Counter());
        for(int   i   =   0;   i   <   pets.size();   i++)   {
            Object   o   =   pets.elementAt(i);
            if(o   instanceof   Pet)
                ((Counter)h.get( "Pet ")).i++;
            if(o   instanceof   Dog)
                ((Counter)h.get( "Dog ")).i++;
            if(o   instanceof   Pug)


                ((Counter)h.get( "Pug ")).i++;
            if(o   instanceof   Cat)
                ((Counter)h.get( "Cat ")).i++;
            if(o   instanceof   Rodent)
                ((Counter)h.get( "Rodent ")).i++;
            if(o   instanceof   Gerbil)
                ((Counter)h.get( "Gerbil ")).i++;
            if(o   instanceof   Hamster)
                ((Counter)h.get( "Hamster ")).i++;
        }
        for(int   i   =   0;   i   <   pets.size();   i++)
            System.out.println(
                pets.elementAt(i).getClass().toString());
        for(int   i   =   0;   i   <   typenames.length;   i++)
            System.out.println(
                typenames[i]   +   "   quantity:   "   +
                ((Counter)h.get(typenames[i])).i);
    }
}  

这里面的Class.forName( "c11.petcount.Dog "),是什么意思?谢谢大家

[解决办法]
反射机制方面的
[解决办法]
Class 类的实例表示正在运行的 Java 应用程序中的类和接口。枚举是一种类,注释是一种接口。每个数组属于被映射为 Class 对象的一个类,所有具有相同元素类型和维数的数组都共享该 Class 对象。基本的 Java 类型(boolean、byte、char、short、int、long、float 和 double)和关键字 void 也表示为 Class 对象。

Class 没有公共构造方法。Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。

forName(String className)
返回与带有给定字符串名的类或接口相关联的 Class 对象。


API上面都有的,看看吧

[解决办法]
得到c11.petcount.Dog这个类的Class
通过这个Class可以实例Dog这个类的对象
或者通过反射操作Dog对象的方法 或者 修改Dog类对象的数据

此Class非彼class 可以把他想想为一种Type
[解决办法]
Class是为了描述类这个东西而给出的更加抽象的一个类。
比如Dog,Cat这样的类,它们有什么共同点呢?有成员方法,有成员变量,有构造方法等等。Class给出了它们更高层次的抽象,而不是具体的方法、变量。
Class.forName( "c11.petcount.Dog "),得到了用于描述Dog类实例的Class的实例。
[解决办法]
可以说是一种类型,主要用在反射机制上,
[解决办法]
Class.forName( "c11.petcount.Dog ")
加载一个类到内存中,是CLASSLOAD的一种形式
[解决办法]
我最近在看think in java,里面第11章介绍的东西看起来很吃力,我想问一下,class到底是什么?和String似的,也是一种类型马?这种类型有什么用?
--------------------------------------------

class也是一种类型,每个具体的class实例就是一个object(比如String.class)例子,你平时用的对象就是这种类对象的实例.class是属于更高一层的抽象.

这里面的Class.forName( "c11.petcount.Dog "),是什么意思?谢谢大家
------------------------------------------------
这里就是产生一个class类的实例,该实例就是Dog.class.
推荐楼主买本书<深入java虚拟机>. 

------解决方案--------------------


Class类意义太重大了。

只可意会,不可言传!
[解决办法]
.
[解决办法]
Class.forName( "c11.petcount.Dog ") 返回与带有c11.petcount.Dog相关联的 Class 对象
[解决办法]
Class class

就是Class类, 对于每一个Java类, 都有一个Class类型的对象与之对应

英文的书里面讲到这里都是Class class一大堆, 慢慢看吧

热点排行