정적 가져오는 배열의 일정체(어 초기화)
-
13-12-2019 - |
문제
I 을 유지하기 위해 필요 숫자의 날에 내 프로그램으로 나는 일을 하는 형식의 배열의 일정체입니다.
에서 액세스할 수 있는 여러 가지 다른 클래스,나는 계획을 선언 그것은 별도의 클래스에 가져와 배열로 정적 가져옵니다.
지금 어떻게 설정 값에 대한 각각의 해당 개체?할 수 있어요 초기화에서 액세스할 수 있는 다른 클래스는 다음과 같다:
public static Calendar[] cal = new Calendar[]{
Calendar.getInstance(),
Calendar.getInstance()};
지금 어떻게 설정 값을까요?
나 Calendar.getInstance().set(2012, 11, 10, 16, 30)
그러나 나는 오류 없이 제안을 합니다.
그래서,
- 정적에 가져오는 정확한(또는 최고)방법이 있을까요?
- 어떻게 설정 값을까요?
해결책
정적 가져오는 부분은 무관하지만 솔직히 그것은 정말 좋은 데 공개적으로 액세스할 수 있는 쓰기 가능한 분야의 변경 가능한 배열의 변경 가능한 객체(일정).더 나은 것을 노출 ImmutableList<DateTime>
를 사용하여 구아바를 위한 ImmutableList
고 시간 Joda 대 DateTime
.(거나 가능성 LocalDateTime
)어쨌든...
당신이 사용할 수 있는 정적 이니셜라이저의 블록은,하지만 나는 아마 그냥 작성하는 방법 대신:
public static Calendar[] cal = createCalendars();
private static Calendar[] createCalendars() {
Calendar[] ret = new Calendar[2];
ret[0] = Calendar.getInstance();
ret[0].set(2012, 11, 10, 16, 30);
ret[1] = Calendar.getInstance();
ret[1].set(...);
return ret;
}
다른 팁
이것은 당신의 취향에 맞지 않을 것입니다. 그러나 그것은 꽤 간결한 방법이 있습니다 :
public static final Calendar[] cal = createCal(
2012, 11, 10, 16, 30,
2012, 11, 11, 16, 30,
2012, 11, 12, 16, 30
);
static Calendar[] createCal(int... fields) {
final List<Calendar> cl = new ArrayList<Calendar>();
for (int i = 0; i < fields.length;) {
final Calendar c = Calendar.getInstance();
c.set(fields[i++], fields[i++], fields[i++], fields[i++], fields[i++]);
cl.add(c);
}
return cl.toArray(new Calendar[cl.size()]);
}
. FYI, 그 값 :
calendar.getInstance (). 세트 (2012, 11, 10, 16, 30)
는 set
: void
에 의해 반환 된 값입니다.
따라서
Calendar Cal= Calendar.getInstance (). 세트 (2012, 11, 10, 16, 30)
Jon & Marko의 완전한 답변을 참조하십시오.