最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java基礎(chǔ)類Class使用指南

 更新時(shí)間:2015年12月29日 11:39:17   投稿:hebedich  
關(guān)于通過類名訪問class屬性,我朋友問過好幾次了,一直沒明白這個(gè)東西到底是什么?對(duì)此,我參照網(wǎng)友們的博客,總結(jié)了一些小知識(shí),如發(fā)現(xiàn)錯(cuò)誤,希望糾正,謝謝

大家都知道Java是一門面向?qū)ο缶幊陶Z(yǔ)言,在Java世界里,萬(wàn)事萬(wàn)物皆對(duì)象,那個(gè)Java中怎么表示對(duì)象呢?Class

我們知道Java中的對(duì)象都是Object類的子類,那么今天我們就一起來(lái)研究一下Java中的Class的使用。

問一下小問題:類是對(duì)象嗎?類是誰(shuí)的對(duì)象?答案是:類是對(duì)象,是java.lang.Class類的實(shí)力對(duì)象。

package com.edu.hpu;

public class Test {
  
  public static void main(String[] args) {
    //通過new實(shí)例化一個(gè)對(duì)象
    Foo foo = new Foo();
    //通過實(shí)例化對(duì)象的getClass()方法得到Class類的實(shí)例
    Class c1 = foo.getClass();
    //任何一個(gè)類都有一個(gè)隱含的靜態(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 {
      //通過類的類類型來(lái)創(chuàng)建類的實(shí)例對(duì)象
      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類");
  }
}

  通過上面的代碼大家是不是對(duì)于Class有了一個(gè)更深入的認(rèn)識(shí),我們可以通過new關(guān)鍵字來(lái)創(chuàng)建類的實(shí)例對(duì)象,同樣可以通過類的類類型來(lái)創(chuàng)建類的實(shí)例對(duì)象,獲取類的類類型的方式以上有三種形式,他們得到的類類型只有一個(gè),所以c1==c2==c3:true。

  經(jīng)過上面的簡(jiǎn)單介紹大家是不是對(duì)于Java中的class有了一個(gè)更深入的認(rèn)識(shí),下面我們通過一個(gè)小例子為大家介紹一下類類型與類的實(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í)刻加載的類是動(dòng)態(tài)加載類。Class.forName("l類的全稱");不僅代表了類類型,而且代表了動(dòng)態(tài)加載類。上面的例子中,Word、Excel我們并不一定用的到,但是當(dāng)我們編譯時(shí),如果Word、與Excel不存在,那么便會(huì)出錯(cuò)。所以接下來(lái)我們通過類類型動(dòng)態(tài)加載類的方式來(lá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ù)需要?jiǎng)討B(tài)的增加類,方便我們應(yīng)用的功能拓展。

相關(guān)文章

  • IDEA中編寫并運(yùn)行shell腳本的實(shí)現(xiàn)

    IDEA中編寫并運(yùn)行shell腳本的實(shí)現(xiàn)

    這篇文章主要介紹了IDEA中編寫并運(yùn)行shell腳本的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • java操作excel的方法

    java操作excel的方法

    這篇文章主要介紹了java操作excel的方法,實(shí)例分析了java針對(duì)excel文件的讀寫、打開、保存等操作技巧,需要的朋友可以參考下
    2015-07-07
  • java執(zhí)行SQL語(yǔ)句實(shí)現(xiàn)查詢的通用方法詳解

    java執(zhí)行SQL語(yǔ)句實(shí)現(xiàn)查詢的通用方法詳解

    這篇文章主要介紹了java執(zhí)行SQL語(yǔ)句實(shí)現(xiàn)查詢的通用方法詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Java Iterator接口實(shí)現(xiàn)代碼解析

    Java Iterator接口實(shí)現(xiàn)代碼解析

    這篇文章主要介紹了Java Iterator接口實(shí)現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • SpringBoot整合Shiro框架,實(shí)現(xiàn)用戶權(quán)限管理

    SpringBoot整合Shiro框架,實(shí)現(xiàn)用戶權(quán)限管理

    Apache Shiro是一個(gè)強(qiáng)大且易用的Java安全框架,執(zhí)行身份驗(yàn)證、授權(quán)、密碼和會(huì)話管理。作為一款安全框架Shiro的設(shè)計(jì)相當(dāng)巧妙。Shiro的應(yīng)用不依賴任何容器,它不僅可以在JavaEE下使用,還可以應(yīng)用在JavaSE環(huán)境中。
    2021-06-06
  • 區(qū)分Java的方法覆蓋與變量覆蓋

    區(qū)分Java的方法覆蓋與變量覆蓋

    作為初學(xué)者2個(gè)比較容易出錯(cuò)的定義,方法覆蓋和變量覆蓋。下面我們一起來(lái)看看作者如何去探討Java的方法覆蓋和變量覆蓋。
    2015-09-09
  • Spring集成Web環(huán)境的實(shí)例詳解

    Spring集成Web環(huán)境的實(shí)例詳解

    這篇文章主要介紹了Spring集成Web環(huán)境,本文通過實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-02-02
  • Java 利用枚舉實(shí)現(xiàn)接口進(jìn)行統(tǒng)一管理

    Java 利用枚舉實(shí)現(xiàn)接口進(jìn)行統(tǒng)一管理

    這篇文章主要介紹了Java 利用枚舉實(shí)現(xiàn)接口進(jìn)行統(tǒng)一管理,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2021-02-02
  • Java利用redis zset實(shí)現(xiàn)延時(shí)任務(wù)詳解

    Java利用redis zset實(shí)現(xiàn)延時(shí)任務(wù)詳解

    zset作為redis的有序集合數(shù)據(jù)結(jié)構(gòu)存在,排序的依據(jù)就是score。本文就將利用zset score這個(gè)排序的這個(gè)特性,來(lái)實(shí)現(xiàn)延時(shí)任務(wù),感興趣的可以了解一下
    2022-08-08
  • Mybatis配置之properties和settings標(biāo)簽的用法

    Mybatis配置之properties和settings標(biāo)簽的用法

    這篇文章主要介紹了Mybatis配置之properties和settings標(biāo)簽的用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評(píng)論

涡阳县| 十堰市| 裕民县| 灵石县| 梁河县| 伊吾县| 龙游县| 高州市| 客服| 乌兰浩特市| 嘉荫县| 永嘉县| 彰化县| 县级市| 华容县| 杨浦区| 新蔡县| 喀喇沁旗| 渭源县| 陆良县| 兴国县| 东乡族自治县| 唐海县| 平湖市| 璧山县| 平和县| 北碚区| 蓬溪县| 延吉市| 镇远县| 北安市| 宣武区| 绵竹市| 乐都县| 外汇| 封开县| 乌苏市| 廊坊市| 元氏县| 达孜县| 海晏县|