- 浏览: 889445 次
- 性别:
- 来自: 深圳
-
文章分类
- 全部博客 (509)
- android (55)
- CSS (23)
- eclipse (25)
- Data Structes and Algorithms (53)
- J2SE (87)
- Java_面试学习_j2se (26)
- java_面试学习_非技术 (13)
- java_gui (2)
- java_设计模式 (27)
- JDBC (10)
- java_web (15)
- hibernate (5)
- Oracle (37)
- Struts2 (7)
- Word-----dos (24)
- Jbpm (3)
- java小技巧 (8)
- math (1)
- flex (12)
- WebService (4)
- 生活 (9)
- 小框架或小语言 (27)
- spring (1)
- 面试~~~软实力 (7)
- jstat的用法 (1)
- jmap (1)
- 数据链路层和传输层的流量控制区别 (1)
- shell (0)
- 财商 (1)
- javascript (0)
- js研究 (1)
- 代码收集 (0)
最新评论
-
海尔群:
http://jingyan.baidu.com/articl ...
android加密 -
完美天龙:
------------------------- ...
asm----字节码操纵 -
houniao1990:
大神,请问 string 类型 定义为 oracle的 cha ...
hibernate注解 -
JamesQian:
Line:103
f.doFilter(msg);
是否需 ...
责任链模式_过滤器模式 -
sacoole:
好评
interview--- 如何从N个数中选出最大(小)的n个数?
为什么要有反射。。。? 答:可以根据别人给我的一个字符串动态的调用它指定的类。。。。 反射的基石是----Class这个类 因为他是所有.class文件的抽象,而Class的实例就代表内存中的一段字节码或者理解为某一个具体的.class文件 如何得到字节码的实例对象: Class.forName("java.lang.String");//先到内存中去找字节码,如果找到就直接返回,如果没有则用内加载器去加载,然后再去内存中拿 Date.class或new Date().getClass()或Class.forName("java.util.Date")都额可以得到这个字节码而且是同一个,注意第三个最灵活 反射就是:把某个java类中的每一个成分解析都成为一个java类,如Method类,Field类。。。。 1。Constructor cons = String.class.getConstructor(StringBuffer.class); String s = (String)cons.newInstance(new StringBuffer("aaa")); 想要new 一个东西,那么得到它的构造器就可以new.... 2。Field代表一个类上的成员变量,而不是一个对象上的成员变量。。。 AA aa = new AA(3,5); Field fieldY = aa.getClass().getField("y"); //注意,这个fieldY还只是类上的哦。。。而且这个Field不是所有的Field,而是允许访问的而已 fieldY.get(aa);//这是得到aa对象上的FieldY变量,这时这个y不能是私有的哈。。。 如何得到私有的实例变量呢? AA aa = new AA(3,5); Field fieldX = aa.getClass().getDeclaredField("x"); //这时就可以看到所有的申明的实例变量了,但还拿不到 fieldX.setAccessible(true);//这行代码被称作暴力反射,虽然私有的不让拿,那么我就抢 fieldX.get("aa");//这时就可以拿到私有的域值了 3。Method代表一个类上的方法。。。 String str1 = "abc"; Method charAtMethod = String.class.getMethod("charAt",int.class);//意思是得到参数是int的charAt方法 charAtMethod.invoke(str1,1); //调用str1上的这个方法,参数是1 charAtMethod.invoke(null,1);//调用静态的这个方法,参数是1 4。数组的反射,有点区别的是数组的反射要借助数组的静态反射类 private static void printObject(Object obj){ Class clazz = obj.getClass(); if(clazz.isArray()){ int len = java.lang.reflect.Array.getLength(obj); for(int i=0;i<len;i++){ System.out.println(Array.get(obj, i)); } }else{ System.out.println(obj); } } 5。 用反射穿透泛型。。。因为泛型是给编译器看的,编译器看完之后会擦除泛型 List<String> list = new ArrayList<String>(); //list.add(1);---不能这么搞,因为编译器会说 哥们,你写错了 list.getClass().getMethod("add", Object.class).invoke(list, 1); 这样就穿透泛型了。。。 6。我传给你一个对象 obj,我可以通过反射知道这个obj里面到底有些什么东西,但是我得不到obj自己是个什么东西。。。。怎么办? 答案是没办法,但是如果一个 List<Date> a = new ArrayList<Date>(); 如果我想知道这个List里面是什么类型则可以办到 思路是,先定义一些方法,然后把这个obj传到哪个方法里面去,看他匹配哪个方法就知道了。。。 Method m = DaoUtil.class.getMethod("myType", List.class); Type[] types = m.getGenericParameterTypes(); ParameterizedType type = (ParameterizedType)types[0]; System.out.println(type.getActualTypeArguments());//这个是得到哪个Date System.out.println(type.getRawType());//这个是得到java.util.List 7。 Class c1 = "abc".getClass(); Class c2 = "aaa".getClass(); System.out.println(c1 == c2); 打印出来的是true ; 因为虽然"abc"和"aaa"的实例是不一样的,但是他们都是String类,那么加载到内存的字节码是一样的。。。
发表评论
-
jdbc--批处理
2012-06-08 18:15 1141http://jdgnewtouch.iteye.com/bl ... -
jdbc
2012-06-07 20:51 932http://www.iteye.com/topic/6466 ... -
j2se----jdk6---httpServer
2012-06-05 20:42 1430package com.tdt.server.httpse ... -
j2se基础---ThreadLocal
2012-06-02 20:47 1119package cn.itcast.heima2; ... -
获取运行时的堆栈信息
2011-12-11 11:00 2172public class Hi { public st ... -
简说XML的解析方式(DOM,SAX,StAX)
2011-09-30 08:44 952一般来说,解析XML文件存在着两种方式,一种是event-ba ... -
j2se----Java异步socket
2011-07-11 17:10 1451用异步输入输出流编写Socket进程通信程序 在Merlin ... -
j2se----socket的缓冲区讨论
2011-07-08 19:52 1783关于socket的发送缓冲区 ... -
Tomcat的Socket实现:org.apache.tomcat.util.net(一)
2011-07-08 19:12 1937org.apache.tomcat.util.net包的内容都 ... -
翻转句子中单词的顺序
2011-07-07 22:42 1765题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺 ... -
j2se---同步的Map
2011-07-07 20:50 1013顾名思义LinkedHashMap是比HashMap多了一个链 ... -
j2se---同步的Map
2011-07-07 20:48 10Map<String String> map = ... -
asm----字节码操纵
2011-06-30 09:14 3963想通过asm的代码生成来写.class文件至少得了解下面的 ... -
j2se----java中,如何获得用户当前的工作目录
2011-05-11 09:44 1910获得当前路径, get java current dire ... -
j2se-----zip
2011-05-10 09:05 1063private InitData getInitFile( ... -
j2se-----可变参数列表
2011-04-01 10:53 902public static void main(Strin ... -
UML
2010-12-31 09:42 915组合: 一种强聚合 class Bird{ ... -
j2se-----metadata
2010-12-19 17:14 1022DatabaseMetaData的用法 ... -
python------一小时学会
2010-12-08 16:28 1939先上java与python的相互调用 如何在Java中调用Jy ... -
j2ee------download.jsp
2010-12-08 13:39 1126Logger logger = C ...
相关推荐
J2SE(Java Standard Edition)6.0版本是Java平台的一个重要里程碑,为开发者带来了许多新特性、增强和优化。这个压缩包包含三个重要的资源:《J2SE6.0-API(中文)-冷冻大雪.chm》、《java api1.6中文文档.chm》...
J2SE的反射机制高级应用J2SE的反射机制高级应用J2SE的反射机制高级应用J2SE的反射机制高级应用
9. **反射机制**:了解如何在运行时动态地获取类的信息并操作类的对象。 10. **泛型**:学习如何使用泛型来提高代码的类型安全性和重用性。 11. **枚举和注解**:理解枚举类型及其在程序中的应用,以及注解的作用...
本书内容非常全面,涵盖了《Java编程思想》、《Java学习笔记》等书籍所有知识要点,并结合作者自己经验总结而编写,内容丰富程度胜过...反射 ..........概述 ..........Class类 ..........类的加载 ..........操作对象
8. **反射机制**: - **Class类**:用于获取类的信息,如构造函数、方法、字段等。 - **动态代理**:在运行时创建代理类,实现接口的方法调用。 9. **枚举类型**: - 枚举是Java中的一种特殊类,用于表示固定...
9. **反射机制**:Class类的使用,动态加载类、创建对象、获取类信息(如字段、方法、构造器)等。 10. **Java集合框架**:List、Set、Map接口的实现类及其特点,以及Collections工具类的使用。 11. **泛型**:...
Java 2 Platform, Standard Edition(J2SE)是Java平台的核心组成部分,主要用于桌面应用程序的开发。J2SE基础知识是每一个Java开发者必须掌握的核心技能。以下将详细阐述J2SE中的关键概念和技术。 1. **Java语言...
它包含了Java语言的基本特性和类库,如集合框架、I/O流、网络编程、多线程、反射等。J2SE是J2ME和J2EE的基础,也是开发Java桌面应用的标准平台。随着版本迭代,如Java SE 8、9、11等,引入了更多的新特性,如Lambda...
Java标准版(J2SE,Java 2 Platform Standard Edition)是Java开发平台的核心部分,用于构建和运行桌面应用。在面试中,对于J2SE的掌握程度常常是评估候选人技术能力的重要指标。以下是一些J2SE面试中常见的知识点:...
9. **反射与注解**:Java的反射机制允许程序在运行时动态地获取类的信息并调用其方法。注解则提供了一种元数据的方式,可以在编译时或运行时处理代码。源代码中可能包含这两个特性的应用。 10. **泛型**:自Java 5...
### 学习J2SE的30个关键知识点解析 #### J2SE的特性与应用场景 J2SE(Java 2 Platform, Standard Edition)是Java技术标准版的一部分,主要用于开发桌面应用程序、网络应用以及简单的服务器端应用。它包含了运行...
在Java编程中,J2SE是基础,它包含了核心类库,如集合框架、I/O流、网络编程、多线程、GUI(图形用户界面)组件、异常处理、反射机制等。这些API为开发者提供了构建复杂应用程序所需的各种工具和功能。 1. 集合框架...
【张孝祥J2SE加强自学笔记(48-56)】主要涵盖了类加载器、代理类和动态类创建等Java核心知识点。 48、类加载器的问题实验分析: 在Java中,类加载器是负责查找并加载类的机制。在Web应用中,有多种类加载器,如...
Java 2 Platform, Standard Edition(简称J2SE)是Java平台的核心部分,它为开发桌面应用、服务器端应用以及中间件提供了基础。J2SE包含了Java语言的核心库,包括类库、开发工具和运行环境,使得开发者能够创建、...
6. **反射机制**:Java的反射API允许在运行时检查和操作类、接口、字段和方法,增强了程序的动态性。 7. **国际化与本地化**:`java.util.Locale`和`ResourceBundle`支持应用程序的国际化,可以根据用户的地区提供...
3. **类库详解**:J2SE 包含了大量的内置类库,如集合框架、I/O 流、反射、正则表达式、日期时间处理等。通过文档,开发者可以学习如何利用这些类库来实现特定功能,提高代码的复用性和可维护性。 4. **标准版特性*...
7. **反射机制**:允许程序在运行时检查和操作类、接口、字段和方法,增加了代码的灵活性。 8. **枚举**:Java中的枚举类型是一种特殊的类,用于定义一组固定的值,通常用于表示有限的、预定义的选项。 9. **泛型*...
Java标准版(J2SE,Java 2 Platform Standard Edition)是Java开发平台的一个核心组件,主要面向桌面应用和服务器端应用程序开发。它包含了Java运行环境、基础类库以及开发工具,是Java程序员进行编程的基础。在J2SE...
5. **反射**:通过Class对象动态访问类的信息,创建并操作类的对象。 6. **枚举与注解**:枚举类型的使用和注解(Annotation)在元编程中的应用。 7. **JNI(Java Native Interface)**:Java与本地代码(C/C++)...