Java 5、Java 6、Java 7の新機能
5756 ワード
Java 5:1、汎用Generics:汎用を参照した後、強制タイプ変換を回避し、コンパイル時にタイプチェックを行うことができる集合内の要素のタイプを指定できます.パラメータと戻り値としてParameterized Typeを使用し、Genericはvararg、annotation、enumeration、collectionの基石です.A、タイプは安全にリスト、Mapを捨てて、リスト、Mapを使ってそれらに要素を追加してあるいはIterator遍歴を使って、コンパイル期間はあなたにタイプの間違いB、方法のパラメータと戻り値を検査してTypeを加えてリスト、Mapを捨てて、リスト、Map Cを使って、タイプの変換を必要としません
D、タイプワイルドカード「?」リストの要素を印刷する方法printListを仮定すると、任意のタイプのTのリストが印刷されることを望んでいます.コード:
ワイルドカードなら?パラメータの種類が広すぎて、リスト、Iteratorをリスト、Iteratorに変更して制限することができます.2、列挙タイプEnumeration:3、自動梱包解体(自動タイプ梱包と解包)autoboxing&unboxing:簡単に言えばタイプ自動変換です.自動梱包:基本タイプ自動から梱包クラス(int-Integer)自動解体:梱包クラス自動から基本タイプ(Integer-int)4、可変パラメータvarargs(varargs number of arguments)パラメータタイプと同時に、リロード関数を統合しました.次のようになります.
5、Annotations javaのmetadata A、Tigerで定義されている3つの標準annotation a、Overrideはあるmethodがsuperclassのmethodをカバーしていることを指摘しています.上書きするメソッド名のスペルが間違っている場合、コンパイルはb、Deprescatedであるmethodまたはelementタイプの使用がブロックされていることを指摘しません.サブクラスはこのメソッドc、SupressWarningsをカバーしてclassを閉じることはできません.method、field、variable初期化のコンパイル期間警告.たとえば、ListがGenericを使用していない場合、@SuppressWarnings(「unchecked」)はコンパイル期間警告を削除します.B、カスタムannotation public@interface Marked{}C、meta-annotationまたはannotationのannotationの4つの標準のmeta-annotationはすべてjavaに定義する.lang.annotaionパッケージ:a,Target定義されたannotationがどのプログラムユニットで使用できるかを指定Targetが指定していない場合は、そのannotationが任意のプログラムユニットで使用できることを示すコード
b,RetentionはJavaコンパイル期間がannotation annotationにどのように対処するかを指摘し、コンパイルされたclassファイルに保持され、annotationが保持されている場合、JVMがclassをロードしたときにそのannotationコードを読み取るかどうかを指定する.
@Retention(RetentionPolicy.SOURCE)/Annotationはコンパイル時にpublic@interface TODO 1{}@Retention(RetentionPolicy.CLASS)/Annotationはclassファイルに保存されますが、JVMによってpublic@interface TODO 2{}@Retention(RetentionPolicy.RUNTIME)/Annotationはclassファイルに保存され、JVMによってpublic@interface TODO 3{}が読み込まれます
c,Documentedは定義されたannotationがよく知られているプログラムユニットと見なされる公開APIの1つ@Documentedによって表記されたannotationがjavadocに表示されることを指摘し、これはannotationが表記された要素がクライアントによって使用された場合に影響を与えるdであり、Inheritedはこのmeta-annotationがclassをターゲットとするannotationタイプに適用され、このannotationでマークされたclassは、親のannotationを自動的に継承します.
D、Annotationの反射javaを発見しました.lang.Classには、getAnnotations、isAnnotationpresentなど、Annotationの反射に関連する方法がたくさんあります.Annotationの反射をカスタマイズしてModelオブジェクト検証コードを作るなど、Annotationの反射を利用して多くのことをすることができます.
public @interface AcceptInt {
}@RejectEmptyと@AcceptIntを使用して私たちのModelのfieldをマークし、反射を利用してModel検証6、新しい反復文(for(int n:numbers))7、静的インポート(import static)8、新しいフォーマット方法(java.util.Formatter)formatterを行います.format(“Remaining account balance: $%.2f”, balance); 9、新しいスレッドモデルとコンカレントライブラリThread Framework HashMapの代替者ConcurrentHashMapとArrayListの代替者CopyOnWriteArrayListは、大コンカレント読み出し時にjavaを採用する.util.パッケージのいくつかのクラスは、BlockingQueue、Callable、Executor、Semaphoreに満足しています.
Java 6:1、スクリプトエンジンをサポートする新しいフレームワークを導入した2、UIの強化3、WebServiceのサポートの強化(JAX-WS 2.0とJAXB 2.0)4、一連の新しいセキュリティ関連の強化5、JDBC 4.0 6、Compiler API 7、汎用Annotationsサポート
Java 7:1,switchで文字列が使えるようになりました
2.List tempList=new ArrayList<>();すなわち、汎用インスタンス化タイプの自動推定
3.配列とは限らず、構文的に集合をサポート
final List piDigits = [ 1,2,3,4,5,8 ]; 4.環境情報を取得するためのツールの追加
5.Booleanタイプ反転、空ポインタ安全、ビット演算に参加
6.2つのchar間のequals
7.安全な加減乗除
8.mapコレクションは同時要求をサポートし、Mapmap={name:“xxx”,age:18}と書くことができる.
List<String> list=new ArrayList<String>();
String str=list.get(i);
D、タイプワイルドカード「?」リストの要素を印刷する方法printListを仮定すると、任意のタイプのTのリストが印刷されることを望んでいます.コード:
public void printList(List<?> list,PrintStream out)throws IOException{
for(Iterator<?> i=list.iterator();i.hasNext();){
System.out.println(i.next.toString());
}
}
ワイルドカードなら?パラメータの種類が広すぎて、リスト、Iteratorをリスト、Iteratorに変更して制限することができます.2、列挙タイプEnumeration:3、自動梱包解体(自動タイプ梱包と解包)autoboxing&unboxing:簡単に言えばタイプ自動変換です.自動梱包:基本タイプ自動から梱包クラス(int-Integer)自動解体:梱包クラス自動から基本タイプ(Integer-int)4、可変パラメータvarargs(varargs number of arguments)パラメータタイプと同時に、リロード関数を統合しました.次のようになります.
public void test(object... objs){
for(Object obj:objs){
System.out.println(obj);
}
}
5、Annotations javaのmetadata A、Tigerで定義されている3つの標準annotation a、Overrideはあるmethodがsuperclassのmethodをカバーしていることを指摘しています.上書きするメソッド名のスペルが間違っている場合、コンパイルはb、Deprescatedであるmethodまたはelementタイプの使用がブロックされていることを指摘しません.サブクラスはこのメソッドc、SupressWarningsをカバーしてclassを閉じることはできません.method、field、variable初期化のコンパイル期間警告.たとえば、ListがGenericを使用していない場合、@SuppressWarnings(「unchecked」)はコンパイル期間警告を削除します.B、カスタムannotation public@interface Marked{}C、meta-annotationまたはannotationのannotationの4つの標準のmeta-annotationはすべてjavaに定義する.lang.annotaionパッケージ:a,Target定義されたannotationがどのプログラムユニットで使用できるかを指定Targetが指定していない場合は、そのannotationが任意のプログラムユニットで使用できることを示すコード
@Target({ElementType.ANNOTATION_TYPE,
ElementType.CONSTRUCTOR,
ElementType.FIELD,
ElementType.LOCAL_VARIABLE,
ElementType.METHOD,
ElementType.PACKAGE,
ElementType.PARAMETER,
ElementType.TYPE})
public @interface TODO {}
b,RetentionはJavaコンパイル期間がannotation annotationにどのように対処するかを指摘し、コンパイルされたclassファイルに保持され、annotationが保持されている場合、JVMがclassをロードしたときにそのannotationコードを読み取るかどうかを指定する.
@Retention(RetentionPolicy.SOURCE)/Annotationはコンパイル時にpublic@interface TODO 1{}@Retention(RetentionPolicy.CLASS)/Annotationはclassファイルに保存されますが、JVMによってpublic@interface TODO 2{}@Retention(RetentionPolicy.RUNTIME)/Annotationはclassファイルに保存され、JVMによってpublic@interface TODO 3{}が読み込まれます
c,Documentedは定義されたannotationがよく知られているプログラムユニットと見なされる公開APIの1つ@Documentedによって表記されたannotationがjavadocに表示されることを指摘し、これはannotationが表記された要素がクライアントによって使用された場合に影響を与えるdであり、Inheritedはこのmeta-annotationがclassをターゲットとするannotationタイプに適用され、このannotationでマークされたclassは、親のannotationを自動的に継承します.
D、Annotationの反射javaを発見しました.lang.Classには、getAnnotations、isAnnotationpresentなど、Annotationの反射に関連する方法がたくさんあります.Annotationの反射をカスタマイズしてModelオブジェクト検証コードを作るなど、Annotationの反射を利用して多くのことをすることができます.
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.FIELD, ElementType.METHOD })
public @interface RejectEmpty {
/** hint title used in error message */
String value() default "";
}
@Retention(RetentionPolicy.RUNTIME)
@Target( { ElementType.FIELD, ElementType.METHOD })
public @interface AcceptInt {
int min() default Integer.MIN_VALUE;
int max() default Integer.MAX_VALUE;
String hint() default "";
}@RejectEmptyと@AcceptIntを使用して私たちのModelのfieldをマークし、反射を利用してModel検証6、新しい反復文(for(int n:numbers))7、静的インポート(import static)8、新しいフォーマット方法(java.util.Formatter)formatterを行います.format(“Remaining account balance: $%.2f”, balance); 9、新しいスレッドモデルとコンカレントライブラリThread Framework HashMapの代替者ConcurrentHashMapとArrayListの代替者CopyOnWriteArrayListは、大コンカレント読み出し時にjavaを採用する.util.パッケージのいくつかのクラスは、BlockingQueue、Callable、Executor、Semaphoreに満足しています.
Java 6:1、スクリプトエンジンをサポートする新しいフレームワークを導入した2、UIの強化3、WebServiceのサポートの強化(JAX-WS 2.0とJAXB 2.0)4、一連の新しいセキュリティ関連の強化5、JDBC 4.0 6、Compiler API 7、汎用Annotationsサポート
Java 7:1,switchで文字列が使えるようになりました
String s = "test";
switch (s) {
case "test" :
System.out.println("test");
case "test1" :
System.out.println("test1");
break ;
default :
System.out.println("break");
break ;
}
2.List tempList=new ArrayList<>();すなわち、汎用インスタンス化タイプの自動推定
3.配列とは限らず、構文的に集合をサポート
final List piDigits = [ 1,2,3,4,5,8 ]; 4.環境情報を取得するためのツールの追加
File System.getJavaIoTempDir() // IO
File System.getJavaHomeDir() // JRE
File System.getUserHomeDir() //
File System.getUserDir() // java 5
5.Booleanタイプ反転、空ポインタ安全、ビット演算に参加
Boolean Booleans.negate(Boolean booleanObj)
True => False , False => True, Null => Null
boolean Booleans.and(boolean[] array)
boolean Booleans.or(boolean[] array)
boolean Booleans.xor(boolean[] array)
boolean Booleans.and(Boolean[] array)
boolean Booleans.or(Boolean[] array)
boolean Booleans.xor(Boolean[] array)
6.2つのchar間のequals
boolean Character.equalsIgnoreCase(char ch1, char ch2)
7.安全な加減乗除
int Math.safeToInt(long value)
int Math.safeNegate(int value)
long Math.safeSubtract(long value1, int value2)
long Math.safeSubtract(long value1, long value2)
int Math.safeMultiply(int value1, int value2)
long Math.safeMultiply(long value1, int value2)
long Math.safeMultiply(long value1, long value2)
long Math.safeNegate(long value)
int Math.safeAdd(int value1, int value2)
long Math.safeAdd(long value1, int value2)
long Math.safeAdd(long value1, long value2)
int Math.safeSubtract(int value1, int value2)
8.mapコレクションは同時要求をサポートし、Mapmap={name:“xxx”,age:18}と書くことができる.