JAVA 类名.class是什么意思?

Python013

JAVA 类名.class是什么意思?,第1张

ConfMgr.class是获取ConfMgr的class对象类型类指的是代表一个类型的类,因为一切皆是对象,几种获取class对象的方法

1,所有的引用数据类型(类-类型)的类名、基本数据类型都可以通过.class方式获取其 Class对象。

对于基本数据类型的封装类还可以通过.TYPE 的方式获取其 Class 对象,但要注意。TYPE 实际上获取的封装类对应的基本类型的 Class 对象的引用。

那么你可以判断出int.class==Integer.TYPE 返回 true,int.class==Integer.class 返回 false!通过这种方式不会初始化静态域,使用.class、.TYPE 的方式获取 Class对象叫做类的字面常量;

2,Class 的 forName(String  name)传入一个类的完整类路径也可以获得 Class 对象。

由于使用的是字符串,必须强制转换才可以获取泛型的Class<T>的 Class对象,并且必须获取这个方法可能抛出的ClassNotFoundException异常。这种方法可以初始化静态域。

3,还可通过类的对象实例下的getClass()方法来获取Class对象,即 实例名getClass()

扩展资料

在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和行为。

每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。

当编辑并运行一个Java程序时,需要同时涉及到这四种方面。使用文字编辑软件(例如记事本、写字板、UltraEdit等)或集成开发环境(Eclipse、MyEclipse等)在Java源文件中定义不同的类。

通过调用类(这些类实现了Java API)中的方法来访问资源系统,把源文件编译生成一种二进制中间码,存储在class文件中。

通过运行与操作系统平台环境相对应的Java虚拟机来运行class文件,执行编译产生的字节码,调用class文件中实现的方法来满足程序的Java API调用 。

参考资料:Java - 百度百科

java中把生成Class对象和实例对象弄混了,更何况生成Class对象和生成instance都有多种方式。所以只有弄清其中的原理,才可以深入理解。首先要生成Class对象,然后再生成Instance。

Class对象的生成方式如下:

1.Class.forName("类名字符串") (注意:类名字符串必须是全称,包名+类名)

2.类名.class

3.实例对象.getClass()

当我们编写一个新的JAVA类时,JVM就会帮我们编译成class对象,存放在同名的.class文件中。在运行时,当需要生成这个类的对象,JVM就会检查此类是否已经装载内存中。若是没有装载,则把.class文件装入到内存中。若是装载,则根据class文件生成实例对象。

但愿能帮到你

java class是什么,让我们一起了解一下?

CLASS是在网络工程中的一种协议,在java中有两种对象:实例对象和Class对象。每个类运行时的类型信息就是用Class对象表示的,它包含了与类有关的信息,其实实例对象就是通过Class对象来创建的。

那我们如何获得Class对象?

1、Class.forName(“类的全限定名”)

2、实例对象.getClass()

3、类名.class (类字面常量)

实战操作:如何获得一个实例的类型类?

Object类中包含一个方法名叫getClass,利用这个方法就可以获得一个实例的类型类。类型类指的是代表一个类型的类,因为一切皆是对象,类型也不例外,在Java使用类型类来表示一个类型,所有的类型类都是Class类的实例。getClass()会看到返回Class 。

JDK中,普通的Class.newInstance()方法的定义返回Object,要将该返回类型强制转换为另一种类型,但是使用泛型的Class ,Class.newInstance()方法具有一个特定的返回类型。

代码如下: public class Main2 {     public static void main(String[] args) throws InstantiationException, IllegalAccessException {         System.out.println("1-----------")         Dog dog1 = creatNew1(Dog.class)         System.out.println(dog1.name + " is " + dog1.type+ "\n")         System.out.println("2-----------")         Animal ani1 = creatNew2(Cat.class)         Cat cat1 = (Cat) ani1         System.out.println(cat1.name + " is " + cat1.type + "\n")         System.out.println("3-----------")         Object obj = creatNew3(Dog.class)         Dog dog2 = (Dog) obj         System.out.println(dog1.name + " is " + dog2.type + "\n")         System.out.println("4-----------")         Object obj2 = creatNew4(Cat.class)         Cat cat2 = (Cat) obj2         System.out.println(cat2.name + " is " + cat2.type + "\n")         System.out.println("5-----------")         Object obj3 = creatNew5(new Cat())         Cat cat3 = (Cat) obj3         System.out.println(cat3.name + " is " + cat3.type + "\n")     }     /**      * 此方法是一个非泛型类中的泛型方法,参数为Class 类型,可以传入任何类,但是Class 将参数在函数内部的类型固定为 T类,使用clazz.newInstance(),返回的类型也为固定的 T 类型。      * 如: 传入Dog.class, 函数中的 T 固定为Dog.class,函数返回的是Dog类型,不需要强制转换为Dog类型      * (当然,函数返回类型也可以是Object类型,但是没必要)      */     public static   T creatNew1(Class  clazz) throws IllegalAccessException, InstantiationException {         System.out.println(clazz)//打印具体传入的类型。         return clazz.newInstance()     }     /**      * 此方法参数是Class ,只能传入Animal及其子类的类型,函数返回类型只能声明为Animal或Object类型,      * 如:传入Cat.class,函数返回一个Animal的子类对象,需将此子类对象强制转换为具体的子类(即Cat类)。      */     public static Animal creatNew2(Class  clazz) throws IllegalAccessException, InstantiationException {         System.out.println(clazz)//打印具体传入的类型。         return clazz.newInstance()     }     /**      * 此方法参数是Class,可传入任何类,其返回只能声明为Object类对象。      * 如:传入Dog.class, 返回的是Object类型的对象,需强制转换为Dog类型的对象。      */     public static Object creatNew3(Class clazz) throws IllegalAccessException, InstantiationException {         System.out.println(clazz)//打印具体传入的类型。         return clazz.newInstance()     }     /**      * 传入参数Class  和 上一个方法传入 Class 的区别还不是很清楚,其返回只能声明为Object类对象。      * 如:Cat.class, 返回的是Object类型的对象,需强制转换为Cat类型的对象。      */     public static Object creatNew4(Class  clazz) throws IllegalAccessException, InstantiationException {         System.out.println(clazz)//打印具体传入的类型。         return clazz.newInstance()     }     /**      * 传入Object类型的对象,返回也声明为Object类型。      */     public static Object creatNew5(Object object) {         System.out.println(object.getClass())//打印具体传入的类型。         return object     } } abstract class Animal {     public String type = "type = animal " } class Dog extends Animal {     public String name = "name = gou" } class Cat extends Animal {     public String name = "name = mao" } /**  * 这些方法,传的参数声明不同,其返回的声明也必然要随之不同。  */