J2EE之反射中的class类(一)
来源:互联网 发布:云计算 erp 编辑:程序博客网 时间:2024/04/28 06:44
J2EE之反射中的class类(一)
class类的简介:
package com.mooc.reflect;public class ClassDemo1 { public static void main(String[] args) { //Foo的实例对象如何表示 Foo foo1=new Foo();//foo1就表示出来了 //Foo这个类也是一个实例对象,Class类的实例对象,如何表示呢 //任何一个类都是Class的实例对象,这个实例对象有三种表示方式 //第一种表示方式-----》实际在告诉我们任何一个类都有一个隐含的静态成员变量class Class c1=Foo.class;// 第二种表达方式,已知该类的对象通过getClass方法 Class c2=foo1.getClass(); //官网c1,,c2表示了Foo类的类类型(class type) 万事万物皆是对象 //类也是对象,是Class类的实例对象// 这个对象我们称为该类的类类型// 不管c1还是c2都代表了Foo类的类类型,一个类只可能是Class类的一个实例对象 System.out.println(c1==c2);// 第三种表达范式 Class c3=null; try { c3=Class.forName("com.mooc.reflect.Foo"); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(c2==c3); //我们完全可以通过类的类类型创建类的对象实例----->通过c1,c2orc3创建Foo的实例对象 try { Foo foo=(Foo)c1.newInstance();//需要有无参数的构造方法 foo.print(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } /* * * true true class实例运行 * * * */ }}class Foo{ void print(){ System.out.println("class实例运行"); }}
原本的静态加载方法:
package com.mooc.reflect;public class Office { public static void main(String[] args) { //new创建对象,是静态加载类,在编译时要加载所有可能用到的类 //通过动态加载类可以解决该问题 if("Word".equals(args[0])){ Word w=new Word(); w.start(); } if("Excel".equals(args[0])){ Excel e=new Excel(); e.start(); } }}
动态加载类方法:
OfficeBetter.java:
package com.mooc.reflect;public class OfficeBetter { public static void main(String[] args) { try { //动态加载类,在运行时刻加载 Class c=Class.forName(args[0]); //通过类类型创建该类对象 OfficeAble oa= (OfficeAble)c.newInstance(); oa.start(); } catch (Exception e) { e.printStackTrace(); } }}
OfficeAble.java:
package com.mooc.reflect;interface OfficeAble { public void start();}
Word.java:
package com.mooc.reflect;public class Word implements OfficeAble{ public void start() { System.out.println("word...start"); }}
Excel.java:
package com.mooc.reflect;public class Excel implements OfficeAble{ public void start() { System.out.println("excle...start"); }}
3 0
- J2EE之反射中的class类(一)
- J2EE之反射中的class类(二)
- 黑马程序员:java中的Class类和反射(一)
- 反射(一)---类Class
- Java反射(一)Class类对象
- Class类---反射学习笔记(一)
- java中的反射一(Class类的认识)
- java 反射 一 Class类
- Java反射(一)Class
- java反射Reflection(一)之的类加载器ClassLoader和Class类
- J2EE反射机制取多类型Class(续)
- Java反射之Class类
- java反射 之Class类
- java反射之Class类
- Java反射机制(一):认识Class类
- java反射机制学习(一)--Class类
- Java反射(一)----- Class类的使用
- Java反射(一):Class类的使用
- 让你的APP可定位(一)
- 通过sinacloud 部署自己的简单网站
- 函数之概览
- R tutorial 19 - handle error in Logistic Regression 逻辑回归 (2)
- eclipse出现的问题
- J2EE之反射中的class类(一)
- 自定义浏览器事件,模拟浏览器事件流
- R tutorial 20 - Logistic Regression 逻辑回归 (3)
- C语言动态内存管理
- Ranking
- ecshop数据库表14(ecs_article_cat)文章分类信息表
- 【SQL 基础】SQL的处理流程
- Django RuntimeError: maximum recursion depth exceeded
- 日常小结-经典IPC问题实现