我試圖更改以下代碼,以便在Android環境中更好地用作即將到來的API的一部分。在Android Studio中,我收到了Java.text.DateFormat的錯誤
public class DateFormatter implement JsonDeserializer<Date>,
JsonSerializer<Date> {
private final DateFormat[] formats;
public DateFormatter() {
formats = new DateFormat[3];
formats[0] = new SimpleDateFormat(DATE_FORMAT);
formats[1] = new SimpleDateFormat(DATE_FORMAT_V2_1);
formats[2] = new SimpleDateFormat(DATE_FORMAT_V2_2);
final TimeZone timeZone = TimeZone.getTimeZone("Zulu"); //$NON-NLS-1$
for (DateFormat format : formats)
format.setTimeZone(timeZone);
}
public Date deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
JsonParseException exception = null;
final String value = json.getAsString();
for (DateFormat format : formats)
try {
synchronized (format) {
return format.parse(value);
}
} catch (ParseException e) {
exception = new JsonParseException(e);
}
throw exception;
}
public JsonElement serialize(Date date, Type type,
JsonSerializationContext context) {
final DateFormat primary = formats[0];
String formatted;
synchronized (primary) {
formatted = primary.format(date);
}
return new JsonPrimitive(formatted);
}
}
我不需要支持v2.1和v2.2。所以我一直在試圖刪除數組,並將其編碼爲只有一個實例。雖然我遇到了一些錯誤。
這是我到目前爲止有:
class DateFormatter implements JsonDeserializer<Date>,
JsonSerializer<Date> {
private DateFormat formats;
DateFormatter() {
formats = new DateFormat;
formats = new SimpleDateFormat(String.valueOf(R.string.date_format), Locale.ENGLISH);
final TimeZone timeZone = TimeZone.getTimeZone("Zulu");
for (DateFormat format : formats)
format.setTimeZone(timeZone);
}
public Date deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
JsonParseException exception = null;
final String value;
value = json.getAsString();
for (DateFormat format : formats)
try {
synchronized (format) {
return format.parse(value);
}
} catch (ParseException e) {
exception = new JsonParseException(e);
}
throw exception;
}
public JsonElement serialize(Date date, Type type,
JsonSerializationContext context) {
final DateFormat primary;
primary = formats;
String formatted;
synchronized (primary) {
formatted = primary.format(date);
}
return new JsonPrimitive(formatted);
}
}
但是,一旦我明白了這一點,我得到的錯誤。我目前關心的主要是getString。
我在這裏做錯了什麼?
編輯:
@trooper我不能構建項目,所以我不能拉--stacktrace --debug
我在後改爲第二代碼塊,以反映我的當前代碼。我變了;
formats = new SimpleDateFormat(getString(R.string.date_format), Locale.ENGLISH);
to;
formats = new SimpleDateFormat(String.valueOf(R.string.date_format), Locale.ENGLISH);
並糾正了我的第一個問題。
所以,現在回答我的下一個問題。正如你所看到的,我正在從第一塊中的數組移動到第二塊中的單個實例。行
for (DateFormat format : formats)
的「格式被拋」的foreach並不適用於java.text.DateFormat中的」
我知道的foreach在陣列中使用,我不知道是怎麼刪除循環的一部分,並實現我所需要的......這是我真正迷失的地方。
我的最終目標是將當前支持API v2 & v3的Eclipse Studio的Java編寫的GitHib APIv3轉換爲Android GitHub API v3,因爲我們不需要覆蓋v2。
我希望這個編輯是足夠的信息能夠回答。
你沒有告訴我們錯誤是什麼。請編輯您的問題並添加堆棧跟蹤。 – trooper
@trooper我現在在做我的日常工作,當我回家時,我將不得不編輯我的問題。而且我很新,在Android Studio中如何查找/獲取堆棧跟蹤? – Sc4ryb3ar