Java中class与Class的区别 您所在的位置:网站首页 class与lesson区别 Java中class与Class的区别

Java中class与Class的区别

#Java中class与Class的区别| 来源: 网络整理| 查看: 265

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一.class与Class区别

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

二.Class介绍

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

三.如何得到Class对象 1.通过getClass()方法获取到Class对象

getClass()方法是Object类的一部分,如下图: 在这里插入图片描述 如果我们已经创建了某个类型的对象,那么我们可以通过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{ } 复制代码

测试运行结果: 在这里插入图片描述

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

Class.forName方法是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{ } 复制代码

测试运行截图: 在这里插入图片描述

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{ } 复制代码

测试运行结果: 在这里插入图片描述

四.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反射机制

参考本人另一篇博客:Java反射机制(初步认识)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有