一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java基礎類Class使用指南

Java基礎類Class使用指南

2020-03-19 12:53hebedich JAVA教程

關于通過類名訪問class屬性,我朋友問過好幾次了,一直沒明白這個東西到底是什么?對此,我參照網友們的博客,總結了一些小知識,如發現錯誤,希望糾正,謝謝

大家都知道Java是一門面向對象編程語言,在Java世界里,萬事萬物皆對象,那個Java中怎么表示對象呢?Class

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

問一下小問題:類是對象嗎?類是誰的對象?答案是:類是對象,是java.lang.Class類的實力對象。

package com.edu.hpu;

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public class Test {
  
  public static void main(String[] args) {
    //通過new實例化一個對象
    Foo foo = new Foo();
    //通過實例化對象的getClass()方法得到Class類的實例
    Class c1 = foo.getClass();
    //任何一個類都有一個隱含的靜態變量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 {
      //通過類的類類型來創建類的實例對象
      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有了一個更深入的認識,我們可以通過new關鍵字來創建類的實例對象,同樣可以通過類的類類型來創建類的實例對象,獲取類的類類型的方式以上有三種形式,他們得到的類類型只有一個,所以c1==c2==c3:true。

  經過上面的簡單介紹大家是不是對于Java中的class有了一個更深入的認識,下面我們通過一個小例子為大家介紹一下類類型與類的實例在實際中的使用。

?
1
2
3
4
5
6
7
8
9
10
11
12
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();
    }
  }
}

  大家看一下上面的代碼,當我們編譯時,是否可以正常通過?這里我們需要說一下編譯與運行:編譯時刻加載的類是靜態加載類;運行時刻加載的類是動態加載類。Class.forName("l類的全稱");不僅代表了類類型,而且代表了動態加載類。上面的例子中,Word、Excel我們并不一定用的到,但是當我們編譯時,如果Word、與Excel不存在,那么便會出錯。所以接下來我們通過類類型動態加載類的方式來實現上面的邏輯。

?
1
2
3
4
5
6
7
8
9
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();}
  }
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
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..");
  }
}

  這樣我們就可以根據需要動態的增加類,方便我們應用的功能拓展。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费高清视频日本 | 午夜影院0606免费 | 人人精品久久 | 99热免费在线 | 亚洲欧洲日产国码 最新 | 国产卡一卡二卡三卡四 | 女明星放荡高h日常生活 | 欧美国产视频 | 国内精品哆啪啪 | 8插8插 | 国产成人精品系列在线观看 | 美女伊人网 | 我的好妈妈7中字在线观看韩国 | v视影院 | 国产成人欧美视频在线 | 欧美人做人爱a全程免费 | 91最新高端约会系列178 | 91香蕉国产视频 | 天天干夜夜添 | 亚洲爱视频 | 国产免费久久精品 | 久久国产精品福利影集 | 四虎影视免费观看免费观看 | 国产一区二区三区在线看 | 久久热国产在线视频 | 大陆国产vs国产对白 | 好男人天堂网 | 紧身短裙女教师波多野 | 亚洲成在人网站天堂一区二区 | 陈峰姚瑶全集小说无删节 | 婷婷色婷婷 | 精品久久久久香蕉网 | 91精品国产高清久久久久久io | 久久九九亚洲精品 | 91大神第九部红酒气质女 | 动漫美女被褥吸奶漫画漫画 | 亚裔aⅴ艳星katsuni | 99最新网址 | 精品视频99 | 边摸边吃奶边做爽视频免费 | www久久com|