8.10 Class类

来源:互联网 发布:利达消防主机编程软件 编辑:程序博客网 时间:2024/06/06 10:55

8.10 Class类

Class类的实例可以帮助程序创建其他类的实例或取得其他类的对象内部信息


8.10.1 使用Class实例化一个对象

(1)使用Class的类方法可以得到一个和某类(参数 className 指定的类)相关的Class对象

public static Class forName(String className)throw ClassNotFoundException
上述方法返回一个和参数className指定的类相关的Class对象。如果类在某个包中,className必须要带包名(例子:className=“Java.util.Date”
(2)步骤(1)中获得的Class对象调用

public Object newInstance()throwClassNotFoundException,IllegalAccessException

就可以得到一个className类对象

/* * 使用Example8_22_Rect类以及java.util包中Date类的对象 */public class Example8_22 {public static void main(String[] args) {// TODO Auto-generated method stubtry {Class class1 = Class.forName("Example8_22_Rect");Example8_22_Rect rect = (Example8_22_Rect) class1.newInstance();rect.width = 100;rect.height = 100;System.out.println("面积:" + rect.getArea());class1 = Class.forName("java.util.Date");Date date = (Date) class1.newInstance();System.out.println(date.toString());} catch (Exception e) {System.out.println(e.toString());}}}


8.10.2 获取类的有关信息

Class对象经常调用的方法:

(1)String getName():返回类的名字

(2)Constructor[ ] getDeclaredConstructors():返回类的全部构造方法

(3)Field[ ] getDeclaredFields() :返回类的全部成员变量

(4)Method [ ] getDeclaredMethods() : 返回类的全部方法

/* * 使用相应的Class对象列出了Java.util.Data全部成员变量和方法的名字 */public class Example8_23 {public static void main(String[] args) {// TODO Auto-generated method stubDate date=new Date();Class class1=date.getClass();String cString=class1.getName();Constructor[] constructors=class1.getDeclaredConstructors();Field[] fields =class1.getDeclaredFields();Method [] methods=class1.getDeclaredMethods();System.out.println("类的名字:"+cString);System.out.println("类中有如下的成员变量:");for (int i = 0; i < fields.length; i++) {System.out.println(fields[i].toString());}System.out.println("类中有如下的方法:");for (int i = 0; i < methods.length; i++) {System.out.println(methods[i].toString());}System.out.println("类中有如下的构造方法:");for (int i = 0; i < constructors.length; i++) {System.out.println(constructors[i].toString());}}}/*类的名字:java.util.Date类中有如下的成员变量:private static final sun.util.calendar.BaseCalendar java.util.Date.gcalprivate static sun.util.calendar.BaseCalendar java.util.Date.jcalprivate transient long java.util.Date.fastTimeprivate transient sun.util.calendar.BaseCalendar$Date java.util.Date.cdateprivate static int java.util.Date.defaultCenturyStartprivate static final long java.util.Date.serialVersionUIDprivate static final java.lang.String[] java.util.Date.wtbprivate static final int[] java.util.Date.ttb类中有如下的方法:public boolean java.util.Date.equals(java.lang.Object)public java.lang.String java.util.Date.toString()public int java.util.Date.hashCode()public java.lang.Object java.util.Date.clone()public int java.util.Date.compareTo(java.util.Date)public int java.util.Date.compareTo(java.lang.Object)private void java.util.Date.readObject(java.io.ObjectInputStream) throws java.io.IOException,java.lang.ClassNotFoundExceptionprivate void java.util.Date.writeObject(java.io.ObjectOutputStream) throws java.io.IOExceptionprivate final sun.util.calendar.BaseCalendar$Date java.util.Date.normalize(sun.util.calendar.BaseCalendar$Date)private final sun.util.calendar.BaseCalendar$Date java.util.Date.normalize()public static long java.util.Date.parse(java.lang.String)public boolean java.util.Date.before(java.util.Date)public boolean java.util.Date.after(java.util.Date)public void java.util.Date.setTime(long)public long java.util.Date.getTime()public static java.util.Date java.util.Date.from(java.time.Instant)public int java.util.Date.getDate()public static long java.util.Date.UTC(int,int,int,int,int,int)public int java.util.Date.getYear()public void java.util.Date.setYear(int)public int java.util.Date.getMonth()public void java.util.Date.setMonth(int)public void java.util.Date.setDate(int)public int java.util.Date.getDay()public int java.util.Date.getHours()public void java.util.Date.setHours(int)public int java.util.Date.getMinutes()public void java.util.Date.setMinutes(int)public int java.util.Date.getSeconds()public void java.util.Date.setSeconds(int)private final long java.util.Date.getTimeImpl()static final long java.util.Date.getMillisOf(java.util.Date)private static final java.lang.StringBuilder java.util.Date.convertToAbbr(java.lang.StringBuilder,java.lang.String)public java.lang.String java.util.Date.toLocaleString()public java.lang.String java.util.Date.toGMTString()public int java.util.Date.getTimezoneOffset()private final sun.util.calendar.BaseCalendar$Date java.util.Date.getCalendarDate()private static final sun.util.calendar.BaseCalendar java.util.Date.getCalendarSystem(int)private static final sun.util.calendar.BaseCalendar java.util.Date.getCalendarSystem(long)private static final sun.util.calendar.BaseCalendar java.util.Date.getCalendarSystem(sun.util.calendar.BaseCalendar$Date)private static final synchronized sun.util.calendar.BaseCalendar java.util.Date.getJulianCalendar()public java.time.Instant java.util.Date.toInstant()类中有如下的构造方法:public java.util.Date(java.lang.String)public java.util.Date(int,int,int,int,int,int)public java.util.Date(int,int,int,int,int)public java.util.Date()public java.util.Date(long)public java.util.Date(int,int,int)*/

原创粉丝点击