Java Reflect 反射
来源:互联网 发布:qq飞车f22猛禽性能数据 编辑:程序博客网 时间:2024/06/07 18:01
Class类的使用
1.在面向对象的世界里,万事万物皆对象
java中,有2个不是面向对象的,一是普通数据类型(由包装类弥补),二是静态的东西(静态属于类,不属于对象)
类是对象,类是java.lang.Class类的实例对象
There is a class named Class
2.这个对象如何表示?
package com.test.reflect;public class Foo{ void print(){ }}public class Demo{ public static void main(String[] args){ //Foo的实例对象如何表示: Foo foo1=new Foo(); //Foo这个捏也是一个实例对象,Class类的实例对象,如何表示呢 //任何一个类都是Class的实例对象,这个实例对象有3种表示方式 //第一种表示方式: //实际告诉我们任何一个类都有一个隐含的静态成员变量class Class c1=Foo.class; //第二种表示方式:已经知道该类的对象通过getClass方法 Class c2=foo1.getClass(); /*c1,c2表示了Foo类的类类型(class type) *万事万物皆对象, *类也是对象,是Class类的实例对象 *这个对象我们称为该类的类类型*/ //c1,c2都代表了Foo类的类类型,一个类只可能是Class类的一个实例对象 Sytstem.out.println(c1==c2);//true //第三种表达方式 Class c3=null; try{ c3=Class.forName("com.test.reflect.Foo"); }catch(ClassNotFoundException e){ e.printStackTrace(); } Sytstem.out.println(c3==c2);//true //我们完全可以通过类的类类型创建该类的对象实例 //通过c1 or c2 or c3创建Foo的实例 try{ Foo foo=(Foo)c1.newInstance(); foo.print(); }catch (InstantiationException e){ e.printStackTrace(); }catch (IllegalAccessException e){ e.printStackTrace(); } }}
java动态加载类
编译时刻加载类———静态加载类
运行时刻加载类———动态加载类
//用new 创建对象,是静态加载类,在编译时刻就需要加载所有可能使用到的类
//动态加载类,在运行时刻加载Class c=Class.forName(args[0])//编译时是不会报错的//通过类类型,创建该类对象OfficeAble oa=(OfficeAble)c.newInstances();oa.start();
通过OfficeAble制定标准,以后根据需要动态加载类Word,Exlel;
功能性的类尽量使用动态加载,而不是静态加载
interface OfficeAble{ public void start();}
class Word implements OfficeAble{ public void start(){ //... }}
class Excel implements OfficeAble{ public void start(){ //... }}
获取方法信息
待编辑
成员变量的反射
构造函数的反射
Java类加载机制
阅读全文
0 0
- java 反射机制 reflect
- java反射机制reflect
- Java 反射,reflect
- Java reflect 反射
- java reflect 反射
- java反射reflect
- Java反射机制(reflect)
- java reflect反射总结
- java反射reflect
- java 反射 reflect
- JAVA--reflect(反射)
- Java反射实例-Reflect
- Java反射(reflect)
- Java反射Reflect
- Reflect Java反射机制
- Java-反射机制reflect
- java reflect:反射机制
- Java反射reflect
- 這些電競選手緣何如此“囂張”
- lunix下安装opencv过程-爬坑总结
- 从Excel中提取数据
- x4
- Postgresql服务管理
- Java Reflect 反射
- 云数据库管理与数据迁移
- vue 1.x 交互-仿百度下拉列表
- 管理分区表
- 【LeetCode算法练习(C++)】Reverse Nodes in k-Group
- 总结JS 常用函数
- spring、springmvc、mybatis整合配置(注解)
- Java反射打印类的信息,包括类的成员函数、成员变量(只获取成员函数)
- (TODO)Empirical Analysis of Predictive Algorithm for Collaborative Filtering