java基础 JDK1.5新特性总结
2013-09-03 01:28
357 查看
1, 可变参数 相当一个数组 m(String …s)一个方法只能有一个可变参数,且只是最后一个参数
2, Foreach循环(for(objecto:list))方便遍历数组和集合
3, 枚举
使用:
注意的问题:1枚举值之间用逗号隔开,最后一个用分号2枚举中可以有抽象,但必须在枚举值中实现;
4, 泛型 泛型解决集合中不安全性,泛型强制集合中都是一个类型
List<Integer> l=new ArrayList<Integer>();Map<Integer,String> m=newHashMap<Integer,String>();
泛型方法:public static <T> void copy(List<T> l,T[]os){ for(T o:os){l.add(o);}}
<T extendsInteger> <? Extends Integer>
5,反射 类对象,类加载时把类的信息保存在jvm中就会产生一个相应的对象(记录类信息的对象),只要类对象存在则类信息就在
获得类对象应用的三种方式:
①Class c1=ArrayList.class; ②Objectl=new ArrayList();Class c2=l.getClass();
③StringclassName="java.util.ArrayList"; Class c3=Class.forName(className);
Class[] cs=c1.getInterfaces();//获得接口
Class c=Animal.class;
Field[] fs=c.getDeclaredFields();//获得属性的数组
Method[] ms=c.getDeclaredMethods();//获得本类所有公私有的方法,getMethods()获得父类所有公开的方法
Constructor[]cons=c.getDeclaredConstructors();//获得构造方法的数组
Object o2=c.newInstance();//创建类的对象
Method m1=c.getDeclaredMethod("study");//找到方法名是study的方法
m1.setAccessible(true);//设置为可以调用
m1.invoke(o2);//调用m1方法
Methodm2=c.getDeclaredMethod("study", String.class);
m2.setAccessible(true);
m2.invoke(o2,"CoreJava");//调用m2的方法,方法的参数是CoreJava
6,注释,===注释是一种类型(总共有四种类型:类,接口,枚举,注释)
定义注释
如:@Override;
标记:@注释名
单值:@注释名(属性名=属性值)
多值:@注释名(属性1=值1,属性2=值2,......)
在类中应用注释:
这里我定义了一个我自己的注释类,声明方式和声明接口差不多,只不过在interface前面多了一个@符号.
注释类也可以用注释类注释,如此下去.
2, Foreach循环(for(objecto:list))方便遍历数组和集合
3, 枚举
enum Course{ UNIX ("Luxw") { public void study(){} }, COREJAVA ("Huxz"){ public void study(){} }; Public void study(); }
使用:
class test { Course [] cs=Course.values(); for(Course c:cs){ System.out.println(s.ordinal+s+s.getName())}}
注意的问题:1枚举值之间用逗号隔开,最后一个用分号2枚举中可以有抽象,但必须在枚举值中实现;
4, 泛型 泛型解决集合中不安全性,泛型强制集合中都是一个类型
List<Integer> l=new ArrayList<Integer>();Map<Integer,String> m=newHashMap<Integer,String>();
泛型方法:public static <T> void copy(List<T> l,T[]os){ for(T o:os){l.add(o);}}
<T extendsInteger> <? Extends Integer>
5,反射 类对象,类加载时把类的信息保存在jvm中就会产生一个相应的对象(记录类信息的对象),只要类对象存在则类信息就在
获得类对象应用的三种方式:
①Class c1=ArrayList.class; ②Objectl=new ArrayList();Class c2=l.getClass();
③StringclassName="java.util.ArrayList"; Class c3=Class.forName(className);
Class[] cs=c1.getInterfaces();//获得接口
Class c=Animal.class;
Field[] fs=c.getDeclaredFields();//获得属性的数组
Method[] ms=c.getDeclaredMethods();//获得本类所有公私有的方法,getMethods()获得父类所有公开的方法
Constructor[]cons=c.getDeclaredConstructors();//获得构造方法的数组
Object o2=c.newInstance();//创建类的对象
Method m1=c.getDeclaredMethod("study");//找到方法名是study的方法
m1.setAccessible(true);//设置为可以调用
m1.invoke(o2);//调用m1方法
Methodm2=c.getDeclaredMethod("study", String.class);
m2.setAccessible(true);
m2.invoke(o2,"CoreJava");//调用m2的方法,方法的参数是CoreJava
6,注释,===注释是一种类型(总共有四种类型:类,接口,枚举,注释)
定义注释
如:@Override;
标记:@注释名
单值:@注释名(属性名=属性值)
多值:@注释名(属性1=值1,属性2=值2,......)
import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME) @Target() public @interface MyType { String authorName(); String lastModified(); String bugFixes() default "ok"; }
在类中应用注释:
import java.lang.annotation.*; @MyType(authorName="hadeslee",lastModified="20061207") public class Test1 { /** Creates a new instance of Test1 */ public Test1() { } @Deprecated @MyType(authorName="hadeslee",lastModified="20061207",bugFixes="what") public void doSth(){ }
这里我定义了一个我自己的注释类,声明方式和声明接口差不多,只不过在interface前面多了一个@符号.
注释类也可以用注释类注释,如此下去.
相关文章推荐
- Java基础学习总结(55)——java8新特性:stream
- 黑马程序员---java基础加强---jdk1.5新特性之注解
- 黑马程序员——java基础(总结、设计模式、java新特性)
- java基础加强(JDK1.5新特性)
- Java基础学习总结(55)——java8新特性:stream
- 黑马程序员——java基础---JDK1.5新特性
- java基础总结(二)-----》java三大特性/原则------继承
- 黑马程序员-java基础加强-JDK1.5新特性-泛型
- 黑马程序员_java基础笔记(10)...JDK1.5的新特性
- Java基础——JDK1.5版本新特性
- Java基础学习总结(124)——Java9逆天的十大新特性
- java -- 总结JDK1.5的常用新特性
- 黑马程序员---java基础加强---jdk1.5新特性之泛型
- java基础总结(一)-java语言的特性
- java基础--高薪技术--JDK1.5新特性
- 黑马程序员 java基础加强——jdk1.5新特性—枚举
- 黑马程序员---java基础加强---高新技术JDK1.5新特性
- Java 基础加强 - JDK1.5 新特性 - 泛型
- 黑马程序员_Java基础:JDK1.5后的新特性:自动拆装箱,以及注意事项
- 黑马程序员--Java基础加强(4)--- JDK1.5新特性之JavaBean、注解