他是一个属性,每个类都有,可以使用BeanInfo得到,如: BeanInfo beanInfo = null; try { beanInfo = Introspector.getBeanInfo(String.class); } catch (IntrospectionException e) { return; } //他只会返回那些至少有一个get/set方法的属性,他是根据参数的类型判定那些orverload的方法中谁 //是get/set方法,invoke这些方法便可以得到或是设定该参数的值 PropertyDescriptor[] propertyDescriptor = beanInfo .getPropertyDescriptors(); for (int i = 0; i < propertyDescriptor.length; i++) { PropertyDescriptor descriptor = propertyDescriptor[i]; int a=0;
} 他只有readMethod,而writeMethod为null
public class Class { public Class forName(String name); public Class forName(String name, boolean resolve, ClassLoader cl); ........... } java.lang.Class class;
其实提问题的人给出的文档已经说明了根本内容:class是任何Java类型都有的一个字面量,这个字面量是一个Class类型的。所以任何Java类型都可以用.操作符获得这个字面量。之所以造成大家的迷惑,是由于没注意到任何Java类型,不仅是各种类,还有基本数据类型如int,(原文class, interface, array, or primitive type),所以zdsxj2002(阿狗),去查了object也没有能找到这个变量。 Class type=int.class也可以用,返回的是java.lang.Integer
cla里面存的是有关ChemRB这个类的有关信息。
java.lang.Object没有看到class属性.
java.lang.Class也没有class的属性我的JDK是1.4.2的我又做了个测试.
new Object().class;这句话是错误的.ChemRB.class 只不过是这个类的一个静态属性.或是继承来的.
他有一人getName方法.或.他的类型是Class类型
......
MyClass obj = (MyClass)cRef.newInstance();
里面的Shape是自定义接口, Rectangle, Circle, Triangle, Ellipse都实现了Shape接口
/*
* ToolBar.java
*
* Created on 2004年10月29日, 下午8:23
*/package PolyDemo;
import java.awt.*;
import javax.swing.*;
import java.util.*;/**
*
* @author XT
*/
public class ToolBar extends JPanel
{
/** Creates a new instance of ToolBar */
public ToolBar()
{
Shape s; buttons = new ButtonGroup();
shapes = new ArrayList(); this.setLayout(new GridLayout(1,0));
for(int i=0;i<shapeTypes.length;i++)
{
try
{
s = (Shape)shapeTypes[i].newInstance();
shapes.add(s);
JToggleButton b = new JToggleButton(s.getClass().getName());
buttons.add(b);
this.add(b);
}
catch(InstantiationException e)
{
System.err.println("Cannot instantiate!");
}
catch(IllegalAccessException e)
{
System.err.println("Cannot Access!");
}
}
} public Shape getSelected()
{
int i;
Shape s;
for(i=0;i<shapes.size();i++)
{
JToggleButton b = (JToggleButton)this.getComponent(i);
if(b.isSelected())
break;
}
if(i>=shapes.size())
s = null;
else
s = (Shape)shapes.get(i); return s;
} public Class[] shapeTypes = {
Rectangle.class,
Circle.class,
Triangle.class,
Ellipse.class
}; private ButtonGroup buttons;
private ArrayList shapes;
}
字符串常量表示一个String实例
类字面量表示一个Class实例
就是reference而已!不是对象
BeanInfo beanInfo = null;
try {
beanInfo = Introspector.getBeanInfo(String.class);
} catch (IntrospectionException e) {
return;
}
//他只会返回那些至少有一个get/set方法的属性,他是根据参数的类型判定那些orverload的方法中谁
//是get/set方法,invoke这些方法便可以得到或是设定该参数的值
PropertyDescriptor[] propertyDescriptor = beanInfo
.getPropertyDescriptors();
for (int i = 0; i < propertyDescriptor.length; i++) {
PropertyDescriptor descriptor = propertyDescriptor[i];
int a=0;
}
他只有readMethod,而writeMethod为null
public Class forName(String name);
public Class forName(String name, boolean resolve, ClassLoader cl);
...........
} java.lang.Class class;
Class type=int.class也可以用,返回的是java.lang.Integer