teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

追記

2020/04/19 07:45

投稿

katoy
katoy

スコア22328

answer CHANGED
@@ -68,5 +68,11 @@
68
68
  }
69
69
  ```
70
70
 
71
+
71
72
  実行例:
72
- ![イメージ説明](2142b50d245b1c7670c2c889f8ea8677.png)
73
+ ![イメージ説明](2142b50d245b1c7670c2c889f8ea8677.png)
74
+
75
+ 追記 その2
76
+
77
+ メソッドの引数を 可変長でなく、 List<List<String>> にしてみました。
78
+ ![イメージ説明](feafa17426d29c3af12407c4dd3bae98.png)

1

追記

2020/04/19 07:45

投稿

katoy
katoy

スコア22328

answer CHANGED
@@ -15,4 +15,58 @@
15
15
  ```
16
16
 
17
17
  実行例:
18
- ![イメージ説明](5b85af4ee2dcc384d53f068ce6c46445.png)
18
+ ![イメージ説明](5b85af4ee2dcc384d53f068ce6c46445.png)
19
+
20
+ 追記 2020--4-19
21
+ exception 処理する例をつくりました。
22
+ (でも本当は、 可変長引数にするのをやめて、 List<String> の配列を引数にするのが良いです。
23
+ (String は 要素数 1 の List<string> にすればよいです。そうすれば、 instanceof でチェックする必要がなくなります。)
24
+ ```java
25
+ import java.util.ArrayList;
26
+ import java.util.List;
27
+
28
+ public class Main {
29
+ public static void main(String[] args) {
30
+ List<String> a = new ArrayList<String>();
31
+ a.add("a");
32
+ a.add("b");
33
+ a.add("c");
34
+ List<String> z = arrayzAsList("d", a, "e", a);
35
+ System.out.println(z);
36
+
37
+ List<Object> b = new ArrayList<Object>();
38
+ b.add(1);
39
+ b.add(1.2);
40
+ b.add('c');
41
+ arrayzAsList(b, 10, 12.3, 'Z');
42
+ }
43
+
44
+ public static List<String> arrayzAsList(Object... objs) throws IllegalArgumentException {
45
+ String errors = "";
46
+ List<String> ans = new ArrayList<String>();
47
+ for (Object obj : objs) {
48
+ if (obj instanceof String) {
49
+ ans.add((String) obj);
50
+ } else if (obj instanceof List<?>) {
51
+ for (Object e : (List<?>)obj) {
52
+ try {
53
+ ans.add((String)e);
54
+ } catch (ClassCastException exp) {
55
+ errors += "\n " + e + " (" + obj.getClass().toString() + ")";
56
+ }
57
+ }
58
+ } else {
59
+ errors += "\n " + obj + " (" + obj.getClass().toString() + ")";
60
+ }
61
+ }
62
+
63
+ if (errors.length() > 0) {
64
+ throw new IllegalArgumentException(errors);
65
+ }
66
+ return ans;
67
+ }
68
+ }
69
+ ```
70
+
71
+ 実行例:
72
+ ![イメージ説明](2142b50d245b1c7670c2c889f8ea8677.png)