我最近在看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 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"),是什么意思?谢谢大家
解决方案 »
- weblogic10获取数据库连接池问题
- Jdialog 与主窗口同步问题
- 将100拆成任意个正整数的和,求最大乘积?
- java学习的无赖
- 求助 .第一次使用JB时的错误..老鸟不要笑话
- 我的WEB服务(JAVA写的)返回的的是一个String ,用C++去调用这个服务时遇到一个问题请教。谢谢!
- 跪求一个用j2me编写手机幻灯片(要代码)
- 统计文件夹大小的程序怎么写?
- 关于jbuilder的一点疑问,请大厦门帮忙!
- 紧急求助!!JXL往excel模板中写数据,excel模板的数据透视表失效。
- 求教paint(),repaint(),update()的问题--如何设计一个画画板?
- 已知两IP之间如何编程完成文件传输
返回与带有给定字符串名的类或接口相关联的 Class 对象。
API上面都有的,看看吧
通过这个Class可以实例Dog这个类的对象
或者通过反射操作Dog对象的方法 或者 修改Dog类对象的数据此Class非彼class 可以把他想想为一种Type
比如Dog,Cat这样的类,它们有什么共同点呢?有成员方法,有成员变量,有构造方法等等。Class给出了它们更高层次的抽象,而不是具体的方法、变量。
Class.forName("c11.petcount.Dog"),得到了用于描述Dog类实例的Class的实例。
加载一个类到内存中,是CLASSLOAD的一种形式
--------------------------------------------------------------------------------class也是一种类型,每个具体的class实例就是一个object(比如String.class)例子,你平时用的对象就是这种类对象的实例.class是属于更高一层的抽象.这里面的Class.forName("c11.petcount.Dog"),是什么意思?谢谢大家
------------------------------------------------------------------------------------
这里就是产生一个class类的实例,该实例就是Dog.class.
推荐楼主买本书<深入java虚拟机>.