回答編集履歴

2

追記

2020/04/19 07:45

投稿

katoy
katoy

スコア22324

test CHANGED
@@ -138,6 +138,18 @@
138
138
 
139
139
 
140
140
 
141
+
142
+
141
143
  実行例:
142
144
 
143
145
  ![イメージ説明](2142b50d245b1c7670c2c889f8ea8677.png)
146
+
147
+
148
+
149
+ 追記 その2
150
+
151
+
152
+
153
+ メソッドの引数を 可変長でなく、 List<List<String>> にしてみました。
154
+
155
+ ![イメージ説明](feafa17426d29c3af12407c4dd3bae98.png)

1

追記

2020/04/19 07:45

投稿

katoy
katoy

スコア22324

test CHANGED
@@ -33,3 +33,111 @@
33
33
  実行例:
34
34
 
35
35
  ![イメージ説明](5b85af4ee2dcc384d53f068ce6c46445.png)
36
+
37
+
38
+
39
+ 追記 2020--4-19
40
+
41
+ exception 処理する例をつくりました。
42
+
43
+ (でも本当は、 可変長引数にするのをやめて、 List<String> の配列を引数にするのが良いです。
44
+
45
+ (String は 要素数 1 の List<string> にすればよいです。そうすれば、 instanceof でチェックする必要がなくなります。)
46
+
47
+ ```java
48
+
49
+ import java.util.ArrayList;
50
+
51
+ import java.util.List;
52
+
53
+
54
+
55
+ public class Main {
56
+
57
+ public static void main(String[] args) {
58
+
59
+ List<String> a = new ArrayList<String>();
60
+
61
+ a.add("a");
62
+
63
+ a.add("b");
64
+
65
+ a.add("c");
66
+
67
+ List<String> z = arrayzAsList("d", a, "e", a);
68
+
69
+ System.out.println(z);
70
+
71
+
72
+
73
+ List<Object> b = new ArrayList<Object>();
74
+
75
+ b.add(1);
76
+
77
+ b.add(1.2);
78
+
79
+ b.add('c');
80
+
81
+ arrayzAsList(b, 10, 12.3, 'Z');
82
+
83
+ }
84
+
85
+
86
+
87
+ public static List<String> arrayzAsList(Object... objs) throws IllegalArgumentException {
88
+
89
+ String errors = "";
90
+
91
+ List<String> ans = new ArrayList<String>();
92
+
93
+ for (Object obj : objs) {
94
+
95
+ if (obj instanceof String) {
96
+
97
+ ans.add((String) obj);
98
+
99
+ } else if (obj instanceof List<?>) {
100
+
101
+ for (Object e : (List<?>)obj) {
102
+
103
+ try {
104
+
105
+ ans.add((String)e);
106
+
107
+ } catch (ClassCastException exp) {
108
+
109
+ errors += "\n " + e + " (" + obj.getClass().toString() + ")";
110
+
111
+ }
112
+
113
+ }
114
+
115
+ } else {
116
+
117
+ errors += "\n " + obj + " (" + obj.getClass().toString() + ")";
118
+
119
+ }
120
+
121
+ }
122
+
123
+
124
+
125
+ if (errors.length() > 0) {
126
+
127
+ throw new IllegalArgumentException(errors);
128
+
129
+ }
130
+
131
+ return ans;
132
+
133
+ }
134
+
135
+ }
136
+
137
+ ```
138
+
139
+
140
+
141
+ 実行例:
142
+
143
+ ![イメージ説明](2142b50d245b1c7670c2c889f8ea8677.png)