类也是一种实例,类的实例创建有三种方式。
类的实例对象创建的方式有两种。以下的代码详细的介绍:
package com.company; import java.util.*; public class Main { public static void main(String[] args) { //类的实例创建有两种方式 Vae xs = new Vae(); xs.music(); //每个类都是一个实例的对象,Vae类是一个Class类的对象,其实例表达方式有3种 //第1种,类的class Class c1 = Vae.class; //第2种,类的实例的getClass Class c2 = xs.getClass(); //第3种,类的名字,这种是最常用的方式,我们在写Java反射的时候会经常使用 Class c3 = null; try { c3 = Class.forName("com.company.Vae"); } catch (ClassNotFoundException e) { e.printStackTrace(); } System.out.println(c1 == c2); System.out.println(c2 == c3); //类的实例的第2种创建方式 try { Vae xs2 = (Vae) c1.newInstance(); xs2.music(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } class Vae{ public void music(){ System.out.println("许嵩是最佳歌手"); } }
这段代码的输出结果是:
下面来整理一下代码,首先,类的实例的创建的两种方法:
//第一种,最常见的new Vae xs = new Vae(); //第二种,newInstance()方式,这种方式必须加try catch,否则会报错 try { Vae xs2 = (Vae) c1.newInstance(); xs2.music(); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); }
其次,类实例的创建方法,其实就是获取这个类的类型,有三种:
//第1种,类的class Class c1 = Vae.class; //第2种,类的实例的getClass Class c2 = xs.getClass(); //第3种,类的名字,这种是最常用的方式,我们在写Java反射的时候会经常使用 Class c3 = null; try { c3 = Class.forName("com.company.Vae"); } catch (ClassNotFoundException e) { e.printStackTrace(); }
第三种的确是最常见的,而且c1,c2,c3是一样的,输出==的时候结果是true。
这些就是Class类的全部知识。先记住。接下来讲解Java的动态加载和静态加载。很快,就可以触及到反射了。
待续。。。
原文:https://www.cnblogs.com/yunquan/p/9545473.html