سؤال

هناك إمكانية أن يكون هذا سؤالا مدفوعا. قمت بتهيئة متغير سلسلة إلى NULL.I قد أو لا أقوم بتحديثه بقيمة. الآن أريد أن أتحقق مما إذا كان هذا المتغير لا يساوي NULL وكل ما أحاول الحصول على استثناء مؤشر فارغ. لا أستطيع رميها استثناء Nullpointer كما هو مكلف. هناك أي حل بدائي فعال

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

المحلول

إذا كنت تستخدم

if (x == null)

سوف تفعلها ليس احصل على NullPointerException.

أظن أنك تفعل:

if (x.y == null)

وهو رمي ل x لاغيا، ليس بسبب x.y باطل.

إذا لم يفسر ذلك، فيرجى نشر التعليمات البرمجية التي تستخدمها لاختبار البطلين.

نصائح أخرى

أعتقد أنك تفعل شيئا مثل هذا،

  String s = null;

  if (s.equals(null))

أنت إما التحقق من فارغة مثل هذا

  if (s == null)

النهج الأفضل هو تجاهل الفنى والتحقق من القيمة المتوقعة فقط مثل هذا،

  if ("Expected value".equals(s))

في هذه الحالة، تكون النتيجة دائما خطأ عندما تكون S NULL.

السلسلة غير قابلة للتغيير

@Test(expected = NullPointerException.class)
public void testStringEqualsNull() {
    String s = null;
    s.equals(null);
}

@Test
public void testStringEqualsNull2() {
    String s = null;
    TestCase.assertTrue(s == null);
}

أنا مقارنة S == null فقط

هل يمكنك إظهار مقتطف الكود الذي كتبته s == null لن يرمي npe أبدا

إذا كنت تقوم بفحص ما إذا كان "S" لاغيا، فلا تقم بتطبيق DOT (.) بعد "S". القيام بذلك من شأنه أن يرمي nullpointerexception، كما هو الحال في تطبيق DOT (.) يعني أنك تحاول الوصول إلى موقع مؤشر وهو لاغيا في الوقت الحالي!

حاول أيضا استخدام وظائف المكتبة التي تحقق مما إذا كانت السلسلة فارغة أو فارغة. يمكنك استخدام Stringutils.Isempty (S) من مكتبة Apache التي تم فحصها

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