jdk5.0新特性

来源:互联网 发布:linux测试环境搭建 编辑:程序博客网 时间:2024/06/07 08:51

七个新特性

1不定长参数

    为什么使用

  (1)使用原始参数无法做到不定长

     (2)使用数组,可以做到不定长,但是有一个问题,如果不传参数是没法调用的。

  (3)语法:类型... 形参

(4)不定长参数必须在最后一位

(5)不定长参数也是一种抽象数据类型,不是基本数据类型。

2静态导入

就是将一个类的静态成员使用导包的方式导入到一个类中。

Import static 。。。。

3增强的for循环

for(容器中的类型  变量名:容器){}

好处:1不会出现下标越界

      2 不用做非空性验证

4自动拆箱装箱

1基本数据类型和对应的包装类可以直接进行交互性转换 

2拆箱:包装类转换成基本数据类型

 装箱:基本数据类型转换成包装类型

5泛型

1泛型简单的使用

2泛型的传递性问题

(1) public class Father< T >{

public void f1( T t){

           }

        }

        public class Child< K > extends Father< K>{ }

public class Test{

Main(){

Child < String > c=new Child< String >();//new 子类的时候指定

c.f1();//此时f1里面要传入String类型的参数

}

}

     (2)public class Father< T >{

public void f1( T t){

           }

        }

public class Child  extends Father< String >{   }//在继承父类的时候指定

public  class Test{

main(){

Child c=new Child();

c.f1();//此时f1放的就是String类型

}

}

   3 List<Object> 是 List<String>的父类吗?//他们之间没有父子类之说

   4 Object[] 是 String[] 的父类吗?是 

   5 泛型通配符   ? 代表任意类型

      List< ? > 是 List<String>的父类吗

      List< ? > list 不能再往里扔东西了。

  List< ?  extends  Number > list ,这时list中放的类型只要是Number类型就可以了。

  public class Test< T  extends  Number  & Serializable> { }  new Test的时候必须 

  传一个Number类型的数据并且实现了Serializable 接口

泛型方法

 public < K > void test( K k ){}

7泛型最后会被擦出的,仅仅在编译期有效

 

 

6注解

自己开发一个注解

@Retention(RetentionPolicy.RUNTIME)//代表这个注解只在运行时有效

@Target({ElementType.FIELD,ElementType.METHOD})//括号中放入的是一个数组,代表这个注解是否可以加在属性或者方法上

public @interface NeedCk {

 

/**

 * 如果一个注解里面出现自己定义的属性,在打注解的地方一定要将这些属性给赋上值

 * 如果不想赋值的话,可以在定义属性的时候给它一个默认的值,用default来定义

 * 如果想让一个注解只放在方法或者属性上,就在自定义的注解的头上打上相应的注解进行处理

 */

public int id();

public String name();

public int age() default 3;//设置默认值为3,如果用到这个注解的地方这个age属性不赋值默 

                                 //认是3,赋值之后就会覆盖了

}

 

7枚举

 

0 0
原创粉丝点击