对于jdk1.5之后追加的一些技术,有相当多的一些部分是为做框架用的,在初识这些技术后觉得有必要对此做下总结。
枚举简而言之就是一种限制传指定对象的特殊类,其也相当于在该类的构造函数中定义了某些final,static的该类对象,枚举有自己的构造函数,字段,方法。当枚举中只传入一个对象时,也就相当于所谓的单实例模式。以简单的定义枚举People类为例。
enum people{ a(1) ,b(2);
int a;
private people(int a){ this.a=a; }
public int geta(){ return a; } }
这样可通过以下代码测试:
People po[]=People.values();
for(People po:pe){System.out.println (po.geta())};
输出结果为:1,2
另外对于枚举类的构造器必须为私有,这样才会体现枚举的意义所在。
反射可以说是整个javase的精髓所在,其很好的体现了面向对象的思想,一般用于加载类,解剖类的各个字节流,大多用在做框架时引用该类的字段,属性,方法。
以解析类的字段为例:Class c=Class.forName("cn.test.reflect.Person");//加载类
Constructor co =c.getConstructor(String.class);//得到构造器
Person p= (Person) co.newInstance("a") ;//构造实例
通过反射可以把类的字段,构造器,方法都以对象的形式表现出来,不禁感慨在java整个系统中,万物皆对象。
内省是个与反射较相似的技术,一般作用于javabean类的信息提取与修改。提到javabean不得不吐槽下字段与属性的区别,字段是指一个类定义的全局变量,而属性是指该类具体能通过getXX()方法得到的变量,所以任何一个类都有一个默认的属性:getclass().还是以Javabean类People为例,有age ,name等属性。
BeanInfo be=Introspector.getBeanInfo(People.class,Object.class); //得到给Javabean的BeanInfo信息
PropertyDescriptor[] po= be.getPropertyDescriptors();//得到属性描述器
for( PropertyDescriptor pr:po){
System.out.println(pr.getName())};//遍历该JavaBean的属性
也可对JavaBean的各个属性值进行读取与修改
PropertyDescriptor pr=new PropertyDescriptor("age", People.class);//得到该JavaBean age属性的描述器
Method me= pr.getWriteMethod();//得到修改值的方法
People p=new People();
me.invoke(p, 23);// 将上面对象的年龄改为23
当然,这只是这些技术的冰山一角,总之还是那句话 ,在java里,万物皆对象。
相关推荐
主要探讨的关键词包括Introspection(内省)和Reflection(反射)。内省是指程序在运行时自我检查和分析的能力,而反射则是实现这一能力的关键工具。 通常,动态语言允许程序在运行时改变其结构或变量类型。虽然...
本文适合具备Java语言基础的读者阅读,主要使用JDK1.5,并涉及关键词Introspection(内省)和Reflection(反射)。内省是指程序自我检查和理解的能力,而反射则是这一能力的具体实现,它使Java程序能够在运行时加载...
eclipse的使用技巧 静态导入 可变参数与for循环增强 基本数据类型的自动拆箱与装箱 枚举 反射 JavaBean内省 beanutils工具包 注解 泛型 类加载器 代理 线程并发库
通过反射,我们可以动态创建对象、调用方法、访问私有成员,以及处理枚举和注解。这是Java灵活性的重要体现,常用于框架开发和元编程。 3. **内省(Introspection)**:内省是Java提供的一组API,用于在运行时检查...
9. **内省(Introspection)和反射(Reflection)增强** JDK 5增强了对注解的反射支持,可以检查和操作类、接口、方法和字段上的注解,增加了编程的灵活性。 10. **NIO.2(New I/O 2)** 虽然JDK 5没有完全引入...
java基础加强ppt(张孝祥版_黎活明版)eclipse的使用技巧、静态导入、可变参数与for循环增强、基本数据类型的自动拆箱与装箱、枚举、反射、JavaBean内省、beanutils工具包、注解、泛型、类加载器、代理、线程并发库
10. **内省增强**:Java 5.0对反射API进行了改进,使得在运行时检查和修改对象的属性和行为更为便捷。 11. **枚举常量的比较**:Java 5.0中的枚举类型实现了`Comparable`接口,使得枚举常量之间可以直接进行比较,...
《Thinking in Java》第三版还涵盖了输入/输出(I/O)、网络编程、反射、枚举、内省、XML处理等高级主题。这些内容可以帮助读者更深入地理解Java平台的全貌,并能处理各种实际开发中的问题。 总之,《Thinking in ...
Java 5.0对内省和反射进行了优化,允许程序在运行时动态地获取类的信息并操作类的对象,增强了Java的灵活性。 十、枚举常量的compareTo方法 Java 5.0为枚举类型添加了compareTo方法,使得枚举常量可以按照自然顺序...
在本课堂笔记完整版中,涉及到了关于JavaWeb学习的全面知识点,内容广泛且详尽,涵盖了从基础语法到框架应用,从工具使用到高级技术的深入讲解。以下是根据给出的内容整理出的知识点: 1. **Eclipse的使用**: - ...
总结分析动态代理类的设计原理与结构 - 动态代理类的设计通常包括代理接口、目标对象、代理对象和InvocationHandler。 ##### 7. 编写可生成代理和插入通告的通用方法 - 可以编写通用方法来自动生成代理对象,并在...
Java 5.0增强了反射API,使得开发者可以通过反射访问和修改类的私有字段,调用私有方法,以及获取和设置泛型信息。 总结,Java JDK1.5在语言层面带来了许多创新,极大地提升了开发效率和代码质量。泛型、枚举、注解...
内省则是通过反射机制获取类的元数据信息,如字段、方法等。 九、动态代理(Dynamic Proxy) JDK5引入的动态代理机制,允许在运行时创建实现了特定接口的新类。这在AOP(面向切面编程)中尤为有用,可以方便地实现...
在Java 5.0中,内省API(如java.lang.reflect包)得到了加强,使得反射操作更加方便。例如,现在可以使用Annotations API来访问和处理类、方法、字段上的注解。 十、静态导入 静态导入允许一次性导入某个类的所有...
10. **chap12**:可能包含高级主题,如反射、注解、枚举、内省、JNI(Java Native Interface)或者并发编程的高级话题。 每一个章节的源代码示例都是理论知识的具体实现,读者可以通过运行和修改代码来加深理解。...
Java 5.0通过`java.lang.reflect`包提供了对运行时类信息的访问,包括获取方法、字段和构造器等,支持动态代理和反射操作。 9. **并发编程改进** Java 5.0引入了`java.util.concurrent`包,提供了线程池、并发...
Java 5.0改进了反射API,提供了更多的类和方法来获取关于类、接口、字段和方法的信息,比如`getDeclaredConstructors()`和`getGenericSignature()`。 9. **并发工具类(Concurrent Utilities)** 新增了`java....
通过查阅"API 5.0中文.chm"文件,你可以详细了解到这些特性和更多其他功能,包括IO流、网络编程、异常处理、集合框架、多线程、反射以及各种内置类和接口的使用方法。这个中文版的API文档对于学习和应用Java 5.0技术...
10. **内省增强(Enhanced Reflection)**:改进了反射API,提供了获取泛型类型信息的能力。 11. **并发工具类(Concurrent Utilities)**:在java.util.concurrent包中引入了许多新的并发控制工具,如Executor框架...
总的来说,这个PPT覆盖了Java编程中的一些重要概念,包括但不限于Eclipse的高效使用、静态导入、增强for循环、可变参数、自动装箱与拆箱、枚举、反射、JavaBean、注解以及泛型等。掌握这些知识将有助于提升Java...