تمرير Immutableset بدلاً من المجموعة؟
-
23-09-2019 - |
سؤال
لدي طريقة تتوقع معلمة محددة. أرغب في المرور في مجموعة فارغة ، ولا أريد أي آثار جانبية على المجموعة.
يمكنني القيام بذلك مع مجموعات من خلال تمريرها:
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
.
لا تنتمي إلى StackOverflow