java学习之反射机制
什么是反射
java程序可以在运行期间动态的加载、解析和使用一些在编译阶段并不确定的类型,这一机制被称为“反射(reflection)”或者“内省(introspection)”.
反射机制提供的功能
1,加载运行时才能确定的类型
2,解析类的结构、获取其内部信息
3,操作该类型或其实例
1》访问属性
2》调用方法
3》创建新对象
java.lang.class 类
class类的实例用于表示运行时的JAVA数据类型,包括类、接口、数组、枚举、注解和基本数据类型
在类加载时, Java虚拟机会自动创建相应的class对象
java.lang.reflect包
1,java.lang.reflect.fleld
2,java.lang.reflect.Method
3,java.lang.reflect.Costructor
4,java.lang.reflect.Modifer
5,java.lang.reflect.Array
使用反机制的基本步骤
获取目标类型相应的class对象
调用Class对象内省方法获取目标类成员信息
访问目标类方法信息/操作目标类成员
例一
package com.manager;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Scanner;
public class TestReflection01 {
public static void main(String[] args) {
System.out.println("input the type of the class");
Scanner scan = new Scanner(System.in);
String className= scan.next();
System.out.println("current class name : " + className);
try {
//获取CLASS对象
Class c = Class.forName(className);
//解析属性信息
Field[] fs = c.getFields();
for(Field f : fs){
System.out.println("----------------
相关文档:
JAVA中用于处理字符串的“三兄弟”
JAVA中用于处理字符串常用的有三个类:java.lang.String、java.lang.StringBuffer、java.lang.StringBuilder,这三者的共同之处都是final类,不允许被继承,这主要是从性能和安全性上考虑的,因为这几个类都是经常被使用着的,且考虑到防止其中的参数被修改影响到其它的应用。 ......
org.apache.commons.net.ftp.*中的FTPClient类实现的FTP上传下载功能:
需导入Apache的commos-net的jar包,若导入的是1.4版本的包,则FTPFile[] fileList = ftpClient.listFiles()的执行过程中可能会报错,此时更换导入2.0版本的jar包,问题即可解决。
代码如下:
package com.java.ftp;
import java.io.File;
import ......
1,概述:线程的挂起操作实质上就是使线程进入“非可执行”状态下,在这个状态下CPU不会分给线程时间片,进入这个状态可以用来暂停一个线程的运行;在线程挂起后,可以通过重新唤醒线程来使之恢复运行。当一个线程进入“非可执行”状态,即挂起状态时,必然存在某种原因使其不能继续运行,这些原因可能 ......
最近一直在使用Java,感觉它的越界检查非常有效。这一点对于初学者来说是非常重要的(提高程序的严谨性),对于有经验的程序员来说也很有帮助。Java中有一个很有效的ArrayList类(读者可以结合Java API
来学习它),。它和一般的数组不一样,不需要提前分配固定的空间(使用比较灵活),每次使用的时候可以添加 ......
英文网站
http://www.javaalmanac.com - Java开发者年鉴一书的在线版本,想要快速查到某种Java技巧的用法及示例的代码这是一个不错的去处.
http://www.onjava.com - O'Reilly的Java网站. 每周都有新文章.
http://java.sun.com - 官方的Java开发者网站 - 每周都有新文章发表.
http://www.developer.com/java - 由Gamelan ......