هل هناك وظيفة الشيك لاغيا varargs في جاوة أو أباتشي العموم؟

StackOverflow https://stackoverflow.com/questions/612521

سؤال

ولقد حصلت على أربعة متغيرات وأريد للتحقق مما إذا أي واحد منهم هو باطل. يمكنني القيام به

if (null == a || null == b || null == c || null == d) {
    ...
}

ولكن ما أريد حقا هو

if (anyNull(a, b, c, d)) {
    ...
}

ولكن لا أريد أن أكتب بنفسي. لا توجد هذه الوظيفة في أي مكتبة جافا المشتركة؟ راجعت العموم لانج ولا يرى ذلك. يجب أن تستخدم varargs اتخاذ أي عدد من الحجج.

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

المحلول

وأفضل يمكنك القيام به مع مكتبة جافا هي، وأعتقد أن:

if (asList(a, b, c, d).contains(null)) {

نصائح أخرى

وأنا لا أعرف ما اذا كان في العموم، لكن الامر يستغرق نحو عشر ثوان لكتابة:

public static boolean anyNull(Object... objs) {
    for (Object obj : objs)
        if (obj == null)
            return true;
    return false;
}

ويمكنك طلب في التعليقات أين يضع المساعد ثابت، أقترح

public class All {
    public static final boolean notNull(Object... all) { ... }
}

ومن ثم استخدام اسم مؤهل للدعوة، مثل

assert All.notNull(a, b, c, d);

ويمكن بعد ذلك أن يتم نفس الشيء مع Any الطبقة وأساليب مثل isNull.

في جاوة 8 يمكنك أن تفعل ذلك بطريقة أكثر أنيقة:

if (Stream.of(a, b, c, d).anyMatch(Objects::isNull)) { ... }

وأو يمكنك استخراجها إلى الأسلوب:

public static boolean anyNull(Object... objects) {
    return Stream.of(objects).anyMatch(Objects::isNull);
}

ومن ثم استخدامها في التعليمات البرمجية الخاصة بك مثل هذا:

if (anyNull(a, b, c, d)) { ... }
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top