سؤال

لدي طريقة تتوقع معلمة محددة. أرغب في المرور في مجموعة فارغة ، ولا أريد أي آثار جانبية على المجموعة.

يمكنني القيام بذلك مع مجموعات من خلال تمريرها:

 Collections.unmodifiableSet(Sets.newHashSet())

لكني أريد أن أضر:

 ImmutableSet.of()

إذا قمت بالأوائل أ Set<Object> تم إنشاؤه وأحصل على "الطريقة غير قابلة للتطبيق على خطأ في مجموعة ARGS. إذا قمت بالأخير الذي أحصل عليه ImmutableSet<Object> تم إنشاؤه وأحصل على خطأ مماثل.

هذا يعمل:

 Collections.unmodifiableSet(new HashSet<String>())

... ولكن يبدو قبيحًا ، وأريد أن أجد طريقة مجموعات Google.

هل كانت مفيدة؟

المحلول

جرب هذا:

ImmutableSet.<String>of()

هذا سوف يعمل أيضا:

Collections.<String>emptySet()

هذا بناء الجملة مفيد لتحديد وسيطات النوع يدويًا في أي وقت يفشل فيه استدلال النوع. :-)

نصائح أخرى

هذا سوف يعمل أيضا:

public static void main(String[] args) {
    Set<String> emptySet = ImmutableSet.of();
    doStuffWith(emptySet);
}

static void doStuffWith(Set<String> strings) {
    // ...
}

لأن نوع الاستدلال يلاحظ أن تقوم بتعيينه إلى Set<String> متغير ويعرف أن المعلمة النوع يجب أن تكون String.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top