栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础类Class使用指南

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础类Class使用指南

大家都知道Java是一门面向对象编程语言,在Java世界里,万事万物皆对象,那个Java中怎么表示对象呢?Class

我们知道Java中的对象都是Object类的子类,那么今天我们就一起来研究一下Java中的Class的使用。

问一下小问题:类是对象吗?类是谁的对象?答案是:类是对象,是java.lang.Class类的实力对象。

package com.edu.hpu;

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有了一个更深入的认识,下面我们通过一个小例子为大家介绍一下类类型与类的实例在实际中的使用。

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不存在,那么便会出错。所以接下来我们通过类类型动态加载类的方式来实现上面的逻辑。

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

  这样我们就可以根据需要动态的增加类,方便我们应用的功能拓展。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/150738.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号