JSR 334Project Coin   開発部  齋藤 輝明
アジェンダ1. switch 文で String が使用できる2. 2進数表現とアンダースコア区切り3. ダイヤモンド4. 例外のマルチキャッチ5. 例外の再送6. リソースを含むtry文7. Generic を使用している可変長引数
アジェンダ1. switch 文で String が使用できる2. 2進数表現とアンダースコア区切り3. ダイヤモンド4. 例外のマルチキャッチ5. 例外の再送6. リソースを含むtry文7. Generic を使用している可変長引数
JDK6 までの switch 文で使用できる型•   整数型    o char    o byte    o short    o int    o 上記の型に対応するラッパークラス•   enum 型
JDK7の switch 文で使用できる型•   整数型    o char    o byte    o short    o int    o 上記の型に対応するラッパークラス•   enum 型•   String 型
JDK6if (animal.equals("dog")) {    ...} else if (animal.equals("cat")) {    ...} else {    ...}
JDK7switch (animal) {  case "dog":    ...    break;  case "cat":    ...    break;  default:    ...    break;}
アジェンダ1. switch 文で String が使用できる2. 2進数表現とアンダースコア区切り3. ダイヤモンド4. 例外のマルチキャッチ5. 例外の再送6. リソースを含むtry文7. Generic を使用している可変長引数
JDK6int decimal = 10; // 10進数int octal = 012; // 8進数int hexadecimal = 0xA; // 16進数
JDK7 (1/2)int decimal = 10; // 10進数int octal = 012; // 8進数int hexadecimal = 0xA; // 16進数int binary = 0b1010; // 2進数
JDK7 (2/2)// アンダースコアint million = 1_000_000;byte b = (byte) 0b0101_1111;int errorOctal = 0_12; // コンパイルエラーint errorHexadec...
アジェンダ1. switch 文で String が使用できる2. 2進数表現とアンダースコア区切り3. ダイヤモンド4. 例外のマルチキャッチ5. 例外の再送6. リソースを含むtry文7. Generic を使用している可変長引数
JDK6Map<String, List<String>> map = new HashMap<String, List<String>>();
JDK7// <> ダイアモンド!Map<String, List<String>> map = new HashMap<>();
アジェンダ1. switch 文で String が使用できる2. 2進数表現とアンダースコア区切り3. ダイヤモンド4. 例外のマルチキャッチ5. 例外の再送6. リソースを含むtry文7. Generic を使用している可変長引数
JDK6try {   ...} catch (FileNotFoundException e) {   ...} catch (ParseException e) {   ...}
JDK7try {   ...} catch (FileNotFoundException | ParseException e) {   ...}
アジェンダ1. switch 文で String が使用できる2. 2進数表現とアンダースコア区切り3. ダイヤモンド4. 例外のマルチキャッチ5. 例外の再送6. リソースを含むtry文7. Generic を使用している可変長引数
JDK6void execute() throws ChildException {  try {     throw new ChildException();  } catch (ParentException e) {     throw...
JDK6void execute() throws ParentException {  try {     throw new ChildException();  } catch (ParentException e) {     thro...
JDK7void execute() throws ChildException {  try {     throw new ChildException();  } catch (ParentException e) {     throw...
アジェンダ1. switch 文で String が使用できる2. 2進数表現とアンダースコア区切り3. ダイヤモンド4. 例外のマルチキャッチ5. 例外の再送6. リソースを含むtry文7. Generic を使用している可変長引数
JDK6BufferedReader reader = null;try {   reader = new BufferedReader(       new FileReader("readTextFile.txt"));   ...} fi...
JDK7try (BufferedReader reader = new BufferedReader(       new FileReader("readTextFile.txt"))) {   ...}// BufferedReader ...
JDK7try (BufferedReader reader = new BufferedReader(       new FileReader("readTextFile.txt"));       BufferedWriter write...
java.lang.AutoCloseable を継承および実装しているもの•   java.beans.XMLDecoder   •   java.sql.ResultSet•   java.beans.XMLEncoder   •   ja...
アジェンダ1. switch 文で String が使用できる2. 2進数表現とアンダースコア区切り3. ダイヤモンド4. 例外のマルチキャッチ5. 例外の再送6. リソースを含むtry文7. Generic を使用している可変長引数
JDK6public static void main(String[] args) {  List<String> list = toList("hoge", "piyo");}private static <T> List<T> toLis...
JDK7public static void main(String[] args) {  List<String> list = toList("hoge", "piyo");}private static <T> List<T> toLis...
警告の理由•   Type safety: Potential heap pollution via    varargs parameter argsprivate static <T> List<T> toList(T... args) {...
これも警告出ちゃうの?•     public static <T> List<T> java.util.Arrays.asList(T...    a)•     public static <T> boolean    java.util....
JDK7public static void main(String[] args) {  List<String> list = toList("hoge", "piyo");}@SafeVarargsprivate static <T> L...
お わ   り
Upcoming SlideShare
Loading in …5
×

Project coin

848 views

Published on

2012/10/22 社内勉強会

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
848
On SlideShare
0
From Embeds
0
Number of Embeds
280
Actions
Shares
0
Downloads
2
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Project coin

  1. 1. JSR 334Project Coin 開発部 齋藤 輝明
  2. 2. アジェンダ1. switch 文で String が使用できる2. 2進数表現とアンダースコア区切り3. ダイヤモンド4. 例外のマルチキャッチ5. 例外の再送6. リソースを含むtry文7. Generic を使用している可変長引数
  3. 3. アジェンダ1. switch 文で String が使用できる2. 2進数表現とアンダースコア区切り3. ダイヤモンド4. 例外のマルチキャッチ5. 例外の再送6. リソースを含むtry文7. Generic を使用している可変長引数
  4. 4. JDK6 までの switch 文で使用できる型• 整数型 o char o byte o short o int o 上記の型に対応するラッパークラス• enum 型
  5. 5. JDK7の switch 文で使用できる型• 整数型 o char o byte o short o int o 上記の型に対応するラッパークラス• enum 型• String 型
  6. 6. JDK6if (animal.equals("dog")) { ...} else if (animal.equals("cat")) { ...} else { ...}
  7. 7. JDK7switch (animal) { case "dog": ... break; case "cat": ... break; default: ... break;}
  8. 8. アジェンダ1. switch 文で String が使用できる2. 2進数表現とアンダースコア区切り3. ダイヤモンド4. 例外のマルチキャッチ5. 例外の再送6. リソースを含むtry文7. Generic を使用している可変長引数
  9. 9. JDK6int decimal = 10; // 10進数int octal = 012; // 8進数int hexadecimal = 0xA; // 16進数
  10. 10. JDK7 (1/2)int decimal = 10; // 10進数int octal = 012; // 8進数int hexadecimal = 0xA; // 16進数int binary = 0b1010; // 2進数
  11. 11. JDK7 (2/2)// アンダースコアint million = 1_000_000;byte b = (byte) 0b0101_1111;int errorOctal = 0_12; // コンパイルエラーint errorHexadecimal = 0x_A; // コンパイルエラーint errorBinary = 0b_1010; // コンパイルエラー
  12. 12. アジェンダ1. switch 文で String が使用できる2. 2進数表現とアンダースコア区切り3. ダイヤモンド4. 例外のマルチキャッチ5. 例外の再送6. リソースを含むtry文7. Generic を使用している可変長引数
  13. 13. JDK6Map<String, List<String>> map = new HashMap<String, List<String>>();
  14. 14. JDK7// <> ダイアモンド!Map<String, List<String>> map = new HashMap<>();
  15. 15. アジェンダ1. switch 文で String が使用できる2. 2進数表現とアンダースコア区切り3. ダイヤモンド4. 例外のマルチキャッチ5. 例外の再送6. リソースを含むtry文7. Generic を使用している可変長引数
  16. 16. JDK6try { ...} catch (FileNotFoundException e) { ...} catch (ParseException e) { ...}
  17. 17. JDK7try { ...} catch (FileNotFoundException | ParseException e) { ...}
  18. 18. アジェンダ1. switch 文で String が使用できる2. 2進数表現とアンダースコア区切り3. ダイヤモンド4. 例外のマルチキャッチ5. 例外の再送6. リソースを含むtry文7. Generic を使用している可変長引数
  19. 19. JDK6void execute() throws ChildException { try { throw new ChildException(); } catch (ParentException e) { throw e; // コンパイルエラー }}
  20. 20. JDK6void execute() throws ParentException { try { throw new ChildException(); } catch (ParentException e) { throw e; // エラーにならない }}
  21. 21. JDK7void execute() throws ChildException { try { throw new ChildException(); } catch (ParentException e) { throw e; // エラーにならない! }}
  22. 22. アジェンダ1. switch 文で String が使用できる2. 2進数表現とアンダースコア区切り3. ダイヤモンド4. 例外のマルチキャッチ5. 例外の再送6. リソースを含むtry文7. Generic を使用している可変長引数
  23. 23. JDK6BufferedReader reader = null;try { reader = new BufferedReader( new FileReader("readTextFile.txt")); ...} finally { if (reader != null) { reader.close(); }}
  24. 24. JDK7try (BufferedReader reader = new BufferedReader( new FileReader("readTextFile.txt"))) { ...}// BufferedReader は java.lang.AutoCloseable を実装している
  25. 25. JDK7try (BufferedReader reader = new BufferedReader( new FileReader("readTextFile.txt")); BufferedWriter writer = new BufferedWriter( new FileWriter("writeTextFile.txt"))) { ...}
  26. 26. java.lang.AutoCloseable を継承および実装しているもの• java.beans.XMLDecoder • java.sql.ResultSet• java.beans.XMLEncoder • java.sql.Statement• java.io.Closeable • java.nio.channels.FileLock• java.io.ObjectInput • javax.sound.midi.MidiDevic• java.io.ObjectOutput e• java.sql.Connection • javax.sound.midi.Receiver • javax.sound.midi.Transmitt er • javax.sound.sampled.Line
  27. 27. アジェンダ1. switch 文で String が使用できる2. 2進数表現とアンダースコア区切り3. ダイヤモンド4. 例外のマルチキャッチ5. 例外の再送6. リソースを含むtry文7. Generic を使用している可変長引数
  28. 28. JDK6public static void main(String[] args) { List<String> list = toList("hoge", "piyo");}private static <T> List<T> toList(T... args) { List<T> list = new ArrayList<T>(); for (T t : args) { list.add(t); } return list;}
  29. 29. JDK7public static void main(String[] args) { List<String> list = toList("hoge", "piyo");}private static <T> List<T> toList(T... args) { // 警告! List<T> list = new ArrayList<T>(); for (T t : args) { list.add(t); } return list;}
  30. 30. 警告の理由• Type safety: Potential heap pollution via varargs parameter argsprivate static <T> List<T> toList(T... args) { Object[] objectArray = args; objectArray[1] = new Integer(200); ...}
  31. 31. これも警告出ちゃうの?• public static <T> List<T> java.util.Arrays.asList(T... a)• public static <T> boolean java.util.Collections.addAll(Collection<? super T> c, T... elements)• public static <E extends Enum<E>> java.util.EnumSet<E> EnumSet.of(E first, E... rest)• protected final void javax.swing.SwingWorker.publish(V... chunks)
  32. 32. JDK7public static void main(String[] args) { List<String> list = toList("hoge", "piyo");}@SafeVarargsprivate static <T> List<T> toList(T... args) { // 警告なし List<T> list = new ArrayList<T>(); for (T t : args) { list.add(t); } return list;}
  33. 33. お わ り

×