java之番外
来源:互联网 发布:自制sql注入工具 编辑:程序博客网 时间:2024/04/27 17:21
1 反射
1.1 获得类的Class对象
Class c1 = Object.class;
Class c2 = Class.forName("java.lang.Object");
Class c3 = new Object().getClass();
c1和c2会调用Object中的静态代码块且 Class支持泛型
1.2 创建对象Object obj = c1.newInstance();
会调用类的代码块 构造方法
1.3 通过Class中的方法 可以得到类中所有的属性 方法
1.4 如果需要调用方法 通过Method的invoke 赋值需要用到Field中的set 如果需要访问私有变量或方法 需要调用setAccessible
1.5 自定义ClassLoader 重写loadClass findClass等方法 可以实现字节码加密 //java核心技术 卷2 9.1.3
2 枚举
蛮好的总结:http://www.cnblogs.com/happyPawpaw/archive/2013/04/09/3009553.html
3 注解
3.1 元注解
@Retention元注解,表示需要在什么级别保存该注释信息(生命周期)。可选的RetentionPoicy参数包括:
RetentionPolicy.SOURCE: 停留在java源文件,编译器被丢掉
RetentionPolicy.CLASS:停留在class文件中,但会被VM丢弃(默认)
RetentionPolicy.RUNTIME:内存中的字节码,VM将在运行时也保留注解,因此可以通过反射机制读取注解的信息
@Target元注解,默认值为任何元素,表示该注解用于什么地方。可用的ElementType参数包括
ElementType.CONSTRUCTOR: 构造器声明
ElementType.FIELD: 成员变量、对象、属性(包括enum实例)
ElementType.LOCAL_VARIABLE: 局部变量声明
ElementType.METHOD: 方法声明
ElementType.PACKAGE: 包声明
ElementType.PARAMETER: 参数声明
ElementType.TYPE: 类、接口(包括注解类型)或enum声明
@Documented将注解包含在JavaDoc中
@Inheried允许子类继承父类中的注解
3.2 自定义注解
3.2.1 定义 通过@interface
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Des {
String name() default "name";
int age();
}
3.2.2 添加注解
@Des(age = 10)
public class Test {
public static void main(String[] args) {
Class<Test> c = Test.class;
if (c.isAnnotationPresent(Des.class)) {//判断是否有Des的注解
Des des = (Des) c.getAnnotation(Des.class);
System.err.println(des.name() + "-----" + des.age());
}
}
}
此外 还有用于方法的 变量的 具体见http://blog.csdn.net/initphp/article/details/37041975
只想到这些
- java之番外
- java之java.lang
- 【JAVA】JAVA之HelloWorld
- 【Java】之Java简介
- Java之关键字Java
- JAVA 之 java概述
- java ee 话外之 http
- Netty之Java堆外内存
- Netty之Java堆外内存扫盲
- Java之编程之美
- Java之美之字符串
- Java之美之Exception
- java之 IO之File
- Java之路之Helloworld
- java之旅之继承
- java之旅之接口
- java之旅之foreach
- java之旅之GUI
- timer_list
- Android 获取手机图片保存的一个通用工具类
- 【剑指offer】6.4抽象建模能力——面试题43:n个骰子的点数
- 【转】merge的用法
- (转)Java正则表达式应用
- java之番外
- Redis源码学习感悟
- linux kernel module打印指定进程栈信息
- 【剑指offer】6.4抽象建模能力——面试题44:扑克牌的顺子
- spring概述(1)
- 【COCOS2D-X 备注篇】ASSETMANAGEREX使用异常解决备注->CHECK_JNI/CC‘JAVA.LANG.NOCLASSDEFFOUNDERROR’
- 几种通讯协议的比较RMI > Httpinvoker >= Hessian >> Burlap >> web service
- 知识图谱的应用
- PHP中的ajax应用实例