回答編集履歴
1
発生原因を追ってみた
test
CHANGED
@@ -1,3 +1,11 @@
|
|
1
1
|
dayは入力された**String**ですよね?formatの必要は無いのでは?
|
2
2
|
|
3
|
-
|
3
|
+
|
4
|
+
|
5
|
+
```java
|
6
|
+
|
7
|
+
String v = d.format(day);
|
8
|
+
|
9
|
+
```
|
10
|
+
|
11
|
+
ここでDateFormatのformatメソッドに渡しているつもりなのでしょうが、引数がDateではなくStringのため、その親クラスFormatのメソッドで、Stringも受け取れる[Format#formatメソッド](https://docs.oracle.com/javase/jp/8/docs/api/java/text/Format.html#format-java.lang.Object-)が起動します。このメソッド経由で、[Format#format(Object, StringBuffer, FieldPosition)メソッド](https://docs.oracle.com/javase/jp/8/docs/api/java/text/Format.html#format-java.lang.Object-java.lang.StringBuffer-java.text.FieldPosition-)が起動します。これは[DateFormatクラスでオーバーライドされており](https://docs.oracle.com/javase/jp/8/docs/api/java/text/DateFormat.html#format-java.lang.Object-java.lang.StringBuffer-java.text.FieldPosition-)、第1引数のObjectが**DateかNumberでなければ例外**(ここで発生しているIllegalArgumentException)を発生します。今回の場合はStringを渡しているため、この例外が発生しているのです。
|