Java基礎(chǔ)類Class使用指南
大家都知道Java是一門面向?qū)ο缶幊陶Z言,在Java世界里,萬事萬物皆對象,那個Java中怎么表示對象呢?Class
我們知道Java中的對象都是Object類的子類,那么今天我們就一起來研究一下Java中的Class的使用。
問一下小問題:類是對象嗎?類是誰的對象?答案是:類是對象,是java.lang.Class類的實(shí)力對象。
package com.edu.hpu;
public class Test {
public static void main(String[] args) {
//通過new實(shí)例化一個對象
Foo foo = new Foo();
//通過實(shí)例化對象的getClass()方法得到Class類的實(shí)例
Class c1 = foo.getClass();
//任何一個類都有一個隱含的靜態(tài)變量class
Class c2 = Foo.class;
//c1、c2表示了Foo類的類類型(class type)
System.out.println(c1 == c2);
Class c3 = null;
try {
//第三種獲得類的類類型的方法
c3 = Class.forName("com.edu.hpu.Foo");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
System.out.println(c1 == c3);
try {
//通過類的類類型來創(chuàng)建類的實(shí)例對象
Foo c4 = (Foo) c1.newInstance();
c4.start();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
class Foo{
public void start(){
System.out.println("Foo類");
}
}
通過上面的代碼大家是不是對于Class有了一個更深入的認(rèn)識,我們可以通過new關(guān)鍵字來創(chuàng)建類的實(shí)例對象,同樣可以通過類的類類型來創(chuàng)建類的實(shí)例對象,獲取類的類類型的方式以上有三種形式,他們得到的類類型只有一個,所以c1==c2==c3:true。
經(jīng)過上面的簡單介紹大家是不是對于Java中的class有了一個更深入的認(rèn)識,下面我們通過一個小例子為大家介紹一下類類型與類的實(shí)例在實(shí)際中的使用。
class Offices{
public static void main(String [] args){
if("Word".equals(args[0])){
Word w = new Word();
w.start();
}
if("Excel".equals(args[0])){
Excel e = new Excel();
e.start();
}
}
}
大家看一下上面的代碼,當(dāng)我們編譯時(shí),是否可以正常通過?這里我們需要說一下編譯與運(yùn)行:編譯時(shí)刻加載的類是靜態(tài)加載類;運(yùn)行時(shí)刻加載的類是動態(tài)加載類。Class.forName("l類的全稱");不僅代表了類類型,而且代表了動態(tài)加載類。上面的例子中,Word、Excel我們并不一定用的到,但是當(dāng)我們編譯時(shí),如果Word、與Excel不存在,那么便會出錯。所以接下來我們通過類類型動態(tài)加載類的方式來實(shí)現(xiàn)上面的邏輯。
class Office{
public static void main(String [] args){
try{
Class c = Class.forName(args[0]);
OfficeAble oa = (OfficeAble)c.newInstance();
oa.Write();
}catch(Exception e){e.printStackTrace();}
}
}
interface OfficeAble{
public void Write();
}
class Word implements OfficeAble{
public void Write(){
System.out.println("Word...start...");
}
}
class Excel implements OfficeAble{
public void Write(){
System.out.println("Excel..Write..");
}
}
這樣我們就可以根據(jù)需要動態(tài)的增加類,方便我們應(yīng)用的功能拓展。
- java基礎(chǔ)類型源碼解析之多角度講HashMap
- 講解Java中的基礎(chǔ)類庫和語言包的使用
- 使用java基礎(chǔ)類實(shí)現(xiàn)zip壓縮和zip解壓工具類分享
- Java基礎(chǔ)之包裝類
- Java基礎(chǔ)詳解之包裝類的裝箱拆箱
- java——Byte類/包裝類的使用說明
- Java基本類型和包裝類型的區(qū)別
- Java基本數(shù)據(jù)類型包裝類原理解析
- Java包裝類原理與用法實(shí)例分析
- Java包裝類的緩存機(jī)制原理實(shí)例詳解
- 詳解Java包裝類及自動裝箱拆箱
- Java基本類型包裝類概述與Integer類、Character類用法分析
- Java基本數(shù)據(jù)類型與對應(yīng)的包裝類(動力節(jié)點(diǎn)java學(xué)院整理)
- 詳細(xì)總結(jié)Java基礎(chǔ)類和包裝類
相關(guān)文章
IDEA中編寫并運(yùn)行shell腳本的實(shí)現(xiàn)
這篇文章主要介紹了IDEA中編寫并運(yùn)行shell腳本的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
java執(zhí)行SQL語句實(shí)現(xiàn)查詢的通用方法詳解
這篇文章主要介紹了java執(zhí)行SQL語句實(shí)現(xiàn)查詢的通用方法詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-12-12
Java Iterator接口實(shí)現(xiàn)代碼解析
這篇文章主要介紹了Java Iterator接口實(shí)現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
SpringBoot整合Shiro框架,實(shí)現(xiàn)用戶權(quán)限管理
Apache Shiro是一個強(qiáng)大且易用的Java安全框架,執(zhí)行身份驗(yàn)證、授權(quán)、密碼和會話管理。作為一款安全框架Shiro的設(shè)計(jì)相當(dāng)巧妙。Shiro的應(yīng)用不依賴任何容器,它不僅可以在JavaEE下使用,還可以應(yīng)用在JavaSE環(huán)境中。2021-06-06
Java 利用枚舉實(shí)現(xiàn)接口進(jìn)行統(tǒng)一管理
這篇文章主要介紹了Java 利用枚舉實(shí)現(xiàn)接口進(jìn)行統(tǒng)一管理,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
Java利用redis zset實(shí)現(xiàn)延時(shí)任務(wù)詳解
zset作為redis的有序集合數(shù)據(jù)結(jié)構(gòu)存在,排序的依據(jù)就是score。本文就將利用zset score這個排序的這個特性,來實(shí)現(xiàn)延時(shí)任務(wù),感興趣的可以了解一下2022-08-08
Mybatis配置之properties和settings標(biāo)簽的用法
這篇文章主要介紹了Mybatis配置之properties和settings標(biāo)簽的用法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-07-07

