黑马程序员-java基础_枚举和反射
来源:互联网 发布:万网域名证书下载地址 编辑:程序博客网 时间:2024/05/18 03:57
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
反射:
Class 这个类代表内存中的一份字节码,
得到类的字节码有三种方式:
如:类名.class——Class c1=Date.class
对象.getClass()——new Date().getClass();
反射Class.forName("类名")——
用Class.forName(java.util.Date);来返回字节码,返回有两种情况:
1、是字节码已经加载到了虚拟机中只要返回就行
2、是虚拟机中还没有字节码,用类加载器去加载,把加载进来的的字节码缓存到虚拟机中返回
判断是不是原始类型:
反射就是把java类中的各种成分映射成相应的java类
得到某个类所有的构造方法:
Constructor[]constructors=
Class.forName("java.lang.String").getConstructors();
得到某类的一个构造方法:
Constructor constructor=
Class.forName("java.lang.String").
getConstructor(StringBuffer.class);//获得方法时要用到类型
创建实例对象:
通常方式:String str=new String(new StringBuffer("abc"));
反射方式:String str=
(String)constructor.newInstance(new StringBuffer("abc"));
Method:某个类中的一个成员方法。
得到类中的某一个方法:
Method charAt=
Class.forName("java.lang.String").getMethod("name",parameterTypes)
如:
//得到方法
如methodCharAt=String.class.getMethod("charAt",int.class);
methodCharAt.invoke(str,1);//调用方法
调用方法:
通常方式:System.out.println(str.charAt(1));
反射方式:System.out.println(charAt.invoke(str,1));
如果传递给Method对象的invoke()方法的第一个参数为null,说明该Method对象对应的是一个静态方法!
具有相同维数和元素类型的数组属于同一个类型,即具有相同的Class实例对象,代表数组的Class实例对象的getSuperClass()方法返回的父类为Object类对应的Class.
基本数据类型的一维数组可以被 当作Object类型来使用,不能当作Object[]类型来使用,非基础数据类型的一维数组既可以当作Object类型使用又可以当做Object[]类型使用。
Arrays.asList()方法处理int[]和String[]时是不一样的。
数组的反射:
Array工具类用于完成对数组的反射操作。
ArrayList_HashSet的比较及Hashcode分析:
ArrayList它的底层实现是数组数据结构,是有顺序的集合它中存储的是对象的引用并且其中的元素可以重复
HashSet是它的底层实现是哈希表,它所存储的元素不允许重复。
Hashcode的作用:
改hashcode时容易造成内存泄漏。
枚举:
如果枚举只有一个成员时,就可以作为一种单例的实现方式。
枚举就相当于一个类,其中也可以定义构造方法、成员方法、普通方法、抽象方法。
枚举元素必须位于枚举体中的最开始部分,且列表的后面要有分号与其他杨员分隔,
如果枚举中带有构造方法则这个方法必须定义成private的
Overload vs Override:
Overload :方法重载,是指方法名相同参数个数不同、参数类型不同,如果一个方法的参数个数及参数类型都相同只是返回值不同,它也不是方法重载,因为方法重载与返回值无关。
Override:方法重写,方法重写是发生在子类中。方法的返回值类型、方法名、参数列表和父类中的方法完全一致,并且子类的访问级别不能低于父类的访问级别。但如果子类中的这个方法是private的那它就不是重写父类中的方法了,它完全就是另一个方法。
享元模式(flyweight):如果很多很小的对象它们又有很多相同的属性,就把它们封装成一个对象,而那些不同的属性就封装成外部对象作为方法的参数传入,称为外部状态,方法称为对象的内部状态。
- 黑马程序员-java基础_枚举和反射
- 黑马程序员_反射、枚举
- 【黑马程序员】java基础加强_枚举
- 【黑马程序员】java基础加强_反射
- 黑马程序员—java基础_反射
- 黑马程序员----JAVA----枚举和反射
- Java高新技术-枚举和反射-----黑马程序员
- 黑马程序员_王康 java反射,枚举,注解
- java高新技术_枚举反射内省(黑马程序员)
- 黑马程序员—java高新技术_枚举&反射&内省
- 黑马程序员-->11_反射和枚举(Reflect & Enum)
- 黑马程序员-->11_反射和枚举(Reflect & Enum)
- 黑马程序员_反射基础
- 黑马程序员_java基础加强_静态导入_反射_枚举_注解_内省_泛型_代理
- 黑马程序员_枚举与反射
- 黑马程序员_反射与枚举
- 黑马程序员--Java基础加强--07枚举、反射、注释
- 黑马程序员_java基础加强-枚举和反射
- vim中多个文件进行复制
- HDU 1698 Just a Hook(线段树)
- Got minus one from a read call异常
- 我的架构经验小结(二)-- 关于三层架构
- DOM23---Js级联菜单实现城市的选择
- 黑马程序员-java基础_枚举和反射
- 关于sql的执行计划(推荐详细)
- 我的架构经验小结(三)-- 深入三层架构
- Android机型适配之密度独立
- Java SE 自学笔记4 之面向对象的类
- 引用:初探Sql Server 执行计划及Sql查询优化
- 设置MySQL字符集
- 开源聊天机器人程序QRobot(QuickRobot)
- 我的架构经验小结(四)-- 实战中演化的三层架构