服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Java教程 - Java中class和Class的区别示例详解

Java中class和Class的区别示例详解

2022-11-02 10:46YuShiwen Java教程

class 是java的关键字,在声明java类时使用,Class是java JDK提供的一个类,完整路径为java.lang.Class,下面这篇文章主要给大家介绍了关于Java中class和Class区别的相关资料,需要的朋友可以参考下

一.class与Class区别

class是Java中的关键字,如public class Xxx 或者 class Xxx ,在声明Java类时使用。 而Class是一个类。 我们通常认为类是对象的抽象和集合,Class就相当于是对类的抽象和集合。 也可以认为对象是类的实例,类是Class的实例。

二.Class介绍

Class是一个类。如下图,它在java.lang包中。

Java中class和Class的区别示例详解

它的构造函数是private属性,所以我们不能直接new一个Class对象出来,如下图注释段所说: “私有构造函数。只有Java虚拟机创建类对象。不使用此构造函数,并阻止生成默认构造函数。”

Java中class和Class的区别示例详解

 

三.如何得到Class对象

1.通过getClass()方法获取到Class对象

getClass()方法是Object类的一部分,如下图:

Java中class和Class的区别示例详解

如果我们已经创建了某个类型的对象,那么我们可以通过getClass()方法来获取该类型的Class的对象:

package Task;
import org.junit.Test;
public class Try0 {
  @Test
  public void toTry() throws ClassNotFoundException {
//        //forName方法:参数为其类的路径
//        Class a = Class.forName("Task.Try1");
//        System.out.println(a);
      //通过对象得到类
      Try1 try1 = new Try1();
      Class b = try1.getClass();
      System.out.println(b);
  }
}

class Try1{
}

测试运行结果:

Java中class和Class的区别示例详解

2.通过forName()方法获取到Class对象

Class.forName方法是Class类的一个静态方法,如下图:

Java中class和Class的区别示例详解

所以可以直接通过Class.forName("类的路径")获取Class对象:

package Task;
import org.junit.Test;
public class Try0 {
  @Test
  public void toTry() throws ClassNotFoundException {
      //forName方法:参数为其类的路径
      Class a = Class.forName("Task.Try1");
      System.out.println(a);
  }
}

class Try1{
}

测试运行截图:

Java中class和Class的区别示例详解

3.类.class获得Class对象(类字面常量)

package Task;
import org.junit.Test;
public class Try0 {
  @Test
  public void toTry() throws ClassNotFoundException {
//        //forName方法:参数为其类的路径
//        Class a = Class.forName("Task.Try1");
//        System.out.println(a);

//        //通过对象得到类
//        Try1 try1 = new Try1();
//        Class b = try1.getClass();
//        System.out.println(b);

      //类字面常量
      Class c = Try1.class;
      System.out.println(c);
  }
}

class Try1{
}

测试运行结果:

Java中class和Class的区别示例详解

 

四.Class常用方法

package Task;
import org.junit.Test;
public class Try0 {
  @Test
  public void toTry() throws ClassNotFoundException {
//        //forName方法:参数为其类的路径
//        Class a = Class.forName("Task.Try1");
//        System.out.println(a);

      //通过对象得到类
      Try1 try1 = new Try1();
      Class b = try1.getClass();
      System.out.println(b);

//        //类字面常量
//        Class c = Try1.class;
//        System.out.println(c);
      //isInterface方法,判断是否为接口
      System.out.println(b.isInterface());
      //isArray方法,判断是否为数组
      System.out.println(b.isArray());
      //isPrimitive方法,判断是否是基本类型,例如int是基本类型,Integer为包装类
      System.out.println(b.isPrimitive());
      //isAnnotation方法,判断是否为注解,注解如常见的重写注解@Override,我们所用的单元测试@Test注解
      System.out.println(b.isAnnotation());
      //isInstance方法参数是一个对象,判断该对象try1对应的类Try1是否是b的对象
      System.out.println(b.isInstance(try1));
      //getClassLoader方法,获取类加载器
      System.out.println(b.getClassLoader());
      //getSuperclass方法,获取父类信息
      System.out.println(b.getSuperclass());
      //getGenericSuperclass方法,也是获取父类信息
      System.out.println(b.getGenericSuperclass());
      //getComponentType方法,如果b的类型是数组,则获取数组里元素的类型
      System.out.println(b.getComponentType());
      //getDeclaredClasses方法,获取b继承于哪个类
      System.out.println(b.getDeclaredClasses());


      //几个获取name的方法:
      //getName方法
      System.out.println(b.getName());
      //getTypeName方法
      System.out.println(b.getTypeName());
      //getCanonicalName方法
      System.out.println(b.getCanonicalName());
      //getSimpleName方法
      System.out.println(b.getSimpleName());

//        以下还有一些方法只列举出来
//        getTypeParameters方法,获取泛型类中的泛型参数数组
//        getClasses方法,获取Class对象中public修饰的内部类
//        getDeclaredClasses方法,获取Class对象中的内部类,继承成员不包含在内
//        getConstructors方法,获取public修饰的构造函数
//        getConstructor方法,查找对应的构造函数
//        getDeclaredConstructors方法,获取Class对象中的构造函数
  }
}

class Try1 {
}

输出截图如下:

Java中class和Class的区别示例详解

总结

到此这篇关于Java中class和Class区别的文章就介绍到这了,更多相关Java class和Class区别内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://juejin.cn/post/7081487324558655524

延伸 · 阅读

精彩推荐