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

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

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..");
  }
}

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国内精品久久久久影院中国 | 久久性生大片免费观看性 | 色四虎 | 男女性刺激爽爽免费视频 | 香港论理午夜电影网 | 男女福利视频 | 免费看打屁股视频的软件 | 范冰冰特黄xx大片 | 日本一卡二卡3卡四卡网站精品 | www亚洲视频| 忘忧草在线| 日韩毛片网 | 免费十几分视频 | 欧美专区亚洲 | 欧美深夜在线 | 性bbwbbwbbwbbw撒尿 | 2021国产精品视频 | 学生小泬无遮挡女HD | 性派对xxxhd| 欧美三级一区二区 | 二区三区视频 | 免费视屏 | 视频在线精品 | 99视频免费在线观看 | 国产三级自拍 | 四虎影视在线影院在线观看观看 | 美女黄a| 天美传媒果冻传媒星空传媒 | 粗又长好猛好爽视频 | 亚洲黄色网页 | 欧美性理论片在线观看片免费 | 欧美在线视频免费播放 | 扒开老师挠尿口到崩溃刑罚 | 2020年精品国产午夜福利在线 | 高h肉爽文农民工 | 天美传媒tm0087| 艹艹逼| 扒开放荡老师裙子猛烈的进入 | 三级黄色片在线免费观看 | 成人性色生活片免费网 | 五月天精品视频播放在线观看 |