java新特性(反射和注记)
来源:互联网 发布:南方策略优化基金净值 编辑:程序博客网 时间:2024/05/29 12:07
(反射)Reflection是Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说"审",并能直接操作程序的内部属性。例如,使用它能获得 Java 类中各成员的名称并显示出来。
①1.认识我吧:Class类
每当一個类被载入时,JVM就自动为其生成一个Class对象,通过操作class对象,我们可以得到该对象的所有成员并操作它们
public class ClassDemo {
public static void main(String[] args) {
public class ClassDemo {
public static void main(String[] args) {
String name = “china";
Class stringClass = name.getClass();
System.out.println("getName: " + stringClass.getName());
System.out.println("isInterface: " + stringClass.isInterface());
System.out.println("isPrimitive: " + stringClass.isPrimitive());
System.out.println("isArray: " + stringClass.isArray());
System.out.println("SuperClass: "+ stringClass.getSuperclass().getName());
}
}
Class stringClass = name.getClass();
System.out.println("getName: " + stringClass.getName());
System.out.println("isInterface: " + stringClass.isInterface());
System.out.println("isPrimitive: " + stringClass.isPrimitive());
System.out.println("isArray: " + stringClass.isArray());
System.out.println("SuperClass: "+ stringClass.getSuperclass().getName());
}
}
2. 如何得到Class对象 它们可获得基本类型的类信息。其中后一种方法中访问的是基本类型的封装类 (如 Integer) 中预先定义好的 TYPE 字段。
•下面就是获得一个 Class 对象的方法之一:
•Class c = Class.forName("java.lang.String");
• 这条语句得到一个 String 类的类对象。还有另一种方法,如下面的语句:
•Class c = int.class;
• 或者
•Class c = Integer.TYPE;
•
3. 动态加载类,Class.forName()方法 5. 类java.lang.reflect.Field 6. 类java.lang.reflect. Modifier
7. 类java.lang.reflect. Constructor
每当一個类被载入时,JVM就自动为其生成一个Class对象
public class ClassDemo {
public static void main(String[] args) {
Class c=Class.forName(“com.cn.Test”);
public class ClassDemo {
public static void main(String[] args) {
Class c=Class.forName(“com.cn.Test”);
c.newInstance();
}
}
}
4. 类java.lang. Package
package com.bird;
import java.util.ArrayList;
import java.lang.Package;
public class Demo{
public static void main(String args[]) throws Exception{
Demo d=new Demo();
d.get("java.net.InetAddress");
}
/*
*参数为类的名字(包名.类名)
*/
public void get(String args) throws Exception{
Class c=Class.forName(args);
Package p=c.getPackage();
System.out.println(p.getName());
}
}
package com.bird;
import java.util.ArrayList;
import java.lang.Package;
public class Demo{
public static void main(String args[]) throws Exception{
Demo d=new Demo();
d.get("java.net.InetAddress");
}
public void get(String args) throws Exception{
Class c=Class.forName(args);
Field []f=c.getFields(); //得到类中所有的字段
for(Field field : f){
System.out.println(field.getName());
}
}
}
package com.bird;
import java.lang.Modifier;
public class Demo{
public static void main(String args[]) throws Exception{
Demo d=new Demo();
d.get("java.net.InetAddress");
}
public void get(String args) throws Exception{
Class c=Class.forName(args);
int m=c.getModifiers();
System.out.println(Modifier.toString(m));
}
}
7. 类java.lang.reflect. Constructor
package com.bird;
import java.lang.Modifier;
public class Demo{
public static void main(String args[]) throws Exception{
Demo d=new Demo();
d.get("java.net.InetAddress");
}
public void get(String args) throws Exception{
Class c=Class.forName(args);
Constructor[] co=c.getConstructors(); //得到构造器
for(Constructor con:co){
System.out.println(con);
}
}
}
8. 类java.lang.reflect. Method
package com.bird;
import java.lang.Modifier;
public class Demo{
public static void main(String args[]) throws Exception{
Demo d=new Demo();
d.get("java.net.InetAddress");
}
public void get(String args) throws Exception{
Class c=Class.forName(args);
Method[] co=c. getDeclaredMethods();//得到某个类中声明的方法,不包括父类的方法
for(Method con:co){
System.out.println(con);
}
}
}
9. 动态方法调用
在程序运行过程中间,可以动态的调用某个方法, Method类的invoke方法。
method.invoke(方法所在的对象, Object[ ]); //调用方法
// Object[ ]是参数数组,如果没有参数可将数组大小为0或参数为
- java新特性(反射和注记)
- java新特性(反射和注记)(续)
- JAVA新特性(反射)
- java/反射/JDK新特性
- Java基础知识-反射-新特性
- JAVA 之JDK1.5新特性和反射机制!
- Java基础-反射学习和JDK新特性
- Java基础加强一、二(Java5新特性和反射 补充)
- 黑马程序员----------Java新特性反射 泛型
- Java之反射及1.5新特性
- [Java5新特性]反射
- 黑马程序员 Java高新技术-jdk1.5新特性和反射基础
- Java Struts 特性和新特性总结
- 反射和特性(1.反射基本信息)
- java--------学习之《JDK1.5新特性,枚举,反射机制》
- 黑马程序员——java反射与新特性
- Java-day8反射 设计模式 JDK新特性
- java 基础加强(myeclipse,debug,junit,JDK5新特性,反射)
- Android APN设置之切换网络
- 常用js
- Effective preparation
- WIN7软件 --
- Fedora12下搭建Android开发环境
- java新特性(反射和注记)
- stat函数说明
- Oracle Parallel Query
- IT行业分析与职业规划
- truncate与delete的区别
- JDOM读写XML文件实例
- Win32 路径处理相关函数
- Windows XP 环境下安装 Apache HTTP Server 2.2.8
- vs2003的debug菜单没有direct3d选项