Más contenido relacionado La actualidad más candente (20) Similar a Project coin (20) Más de Appresso Engineering Team (20) Project coin2. アジェンダ
1. switch 文で String が使用できる
2. 2進数表現とアンダースコア区切り
3. ダイヤモンド
4. 例外のマルチキャッチ
5. 例外の再送
6. リソースを含むtry文
7. Generic を使用している可変長引数
3. アジェンダ
1. switch 文で String が使用できる
2. 2進数表現とアンダースコア区切り
3. ダイヤモンド
4. 例外のマルチキャッチ
5. 例外の再送
6. リソースを含むtry文
7. Generic を使用している可変長引数
4. JDK6 までの switch 文で使用できる
型
• 整数型
o char
o byte
o short
o int
o 上記の型に対応するラッパークラス
• enum 型
8. アジェンダ
1. switch 文で String が使用できる
2. 2進数表現とアンダースコア区切り
3. ダイヤモンド
4. 例外のマルチキャッチ
5. 例外の再送
6. リソースを含むtry文
7. Generic を使用している可変長引数
10. JDK7 (1/2)
int decimal = 10; // 10進数
int octal = 012; // 8進数
int hexadecimal = 0xA; // 16進数
int binary = 0b1010; // 2進数
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. アジェンダ
1. switch 文で String が使用できる
2. 2進数表現とアンダースコア区切り
3. ダイヤモンド
4. 例外のマルチキャッチ
5. 例外の再送
6. リソースを含むtry文
7. Generic を使用している可変長引数
15. アジェンダ
1. switch 文で String が使用できる
2. 2進数表現とアンダースコア区切り
3. ダイヤモンド
4. 例外のマルチキャッチ
5. 例外の再送
6. リソースを含むtry文
7. Generic を使用している可変長引数
16. JDK6
try {
...
} catch (FileNotFoundException e) {
...
} catch (ParseException e) {
...
}
17. JDK7
try {
...
} catch (FileNotFoundException | ParseException e) {
...
}
18. アジェンダ
1. switch 文で String が使用できる
2. 2進数表現とアンダースコア区切り
3. ダイヤモンド
4. 例外のマルチキャッチ
5. 例外の再送
6. リソースを含むtry文
7. Generic を使用している可変長引数
19. JDK6
void execute() throws ChildException {
try {
throw new ChildException();
} catch (ParentException e) {
throw e; // コンパイルエラー
}
}
20. JDK6
void execute() throws ParentException {
try {
throw new ChildException();
} catch (ParentException e) {
throw e; // エラーにならない
}
}
21. JDK7
void execute() throws ChildException {
try {
throw new ChildException();
} catch (ParentException e) {
throw e; // エラーにならない!
}
}
22. アジェンダ
1. switch 文で String が使用できる
2. 2進数表現とアンダースコア区切り
3. ダイヤモンド
4. 例外のマルチキャッチ
5. 例外の再送
6. リソースを含むtry文
7. Generic を使用している可変長引数
23. JDK6
BufferedReader reader = null;
try {
reader = new BufferedReader(
new FileReader("readTextFile.txt"));
...
} finally {
if (reader != null) {
reader.close();
}
}
24. JDK7
try (BufferedReader reader = new BufferedReader(
new FileReader("readTextFile.txt"))) {
...
}
// BufferedReader は java.lang.AutoCloseable を実装し
ている
25. JDK7
try (BufferedReader reader = new BufferedReader(
new FileReader("readTextFile.txt"));
BufferedWriter writer = new BufferedWriter(
new FileWriter("writeTextFile.txt"))) {
...
}
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. アジェンダ
1. switch 文で String が使用できる
2. 2進数表現とアンダースコア区切り
3. ダイヤモンド
4. 例外のマルチキャッチ
5. 例外の再送
6. リソースを含むtry文
7. Generic を使用している可変長引数
28. JDK6
public 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. JDK7
public 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. 警告の理由
• Type safety: Potential heap pollution via
varargs parameter args
private static <T> List<T> toList(T... args) {
Object[] objectArray = args;
objectArray[1] = new Integer(200);
...
}
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. JDK7
public static void main(String[] args) {
List<String> list = toList("hoge", "piyo");
}
@SafeVarargs
private static <T> List<T> toList(T... args) { // 警告なし
List<T> list = new ArrayList<T>();
for (T t : args) { list.add(t); }
return list;
}