利用Class建立对象

阅读:253

目录介绍

  • 01.情景分析
  • 02.建立实例对象

01.情景分析

  • 例如,你需要来控制学生、老师或者家长的唱歌行为,可是学生、老师和家长这些类又是由其他人来设计的,你只是对开始与暂停操作进行控制。那么该如何做呢?

02.建立实例对象

  • 如果已有确切的类,那么就可以使用new关键字建立实例。如果不知道类名称,那么可以利用Class.forName()动态加载.class文档,取得Class对象之后,利用其newInstance()方法建立实例
    Class cl = Class.forName("ClassName");
    Object object = cl.newInstance();
    

  • 这种事先不知道类名称,又需要建立类实例的需求,一般情况下都是由于开发者需要得到某个类对象并对其行为进行操纵,可是该类又是由他人开发且还未完工,因此就需要来动态加载.class文档
  • 针对情景1的分析与操作步骤
    • 你可以规定学生类必须实现Sing接口
      public interface Sing {
      	void start();
      }
      

    • 那么,就可以来进行自己的开发了,将动态加载的对象强转为Sing
      public class Main {
      	public static void main(String[] args) {
      		try {
      			Sing palyer = (Sing) Class.forName("className").newInstance();
      			palyer.start();
      		} catch (Exception e) {
      			e.printStackTrace();
      		}
      		
      	}
      }
      

    • 然后规定他人设计的学生类必须实现Sing接口
      public class Student implements Sing {
      
      	@Override
      	public void start() {
      		System.out.println("学生唱歌");
      	}
      }
      

    • 这样,等到得到确切的类名称后,修改main方法的className即可
      public static void main(String[] args) {
      	try {
      		Sing palyer = (Sing) Class.forName("net.zhifou.demo.Student").newInstance();
      		palyer.start();
      	} catch (Exception e) {
      		e.printStackTrace();
      	}
      	
      }

赞赏支持


精彩留言

发表评论