سؤال

أنا معجب كبير من الملاكمة التلقائية في جافا لأنها توفر الكثير من رمز لوحة المراجل القبيحة. ومع ذلك، لقد وجدت تصويبات تلقائية مربكة في بعض الحالات حيث قد يكون كائن الرقم فارغا. هل هناك أي طريقة للكشف عن مكان حدوث علبة Uncoxing في CodeBase مع تحذير Javac؟ سيكون موضع تقدير أي حل آخر للكشف عن حدوث حوادث Uncoxing فقط (مثل Findbugs أو تحذير برنامج التحويل البرمجي الخاص بالكسوف) حيث لا يمكنني العثور على أي.

لتوضيح أنني لا أريد أن يتم إنشاء أي تحذيرات على الملاكمة - Unboxing فقط.

فيما يلي مثال بسيط على بعض الكود الذي يمكن أن يسبب مربكة NullPointerExceptions:

class Test {
    private Integer value;

    public int getValue() {
        return value;
    }
}
هل كانت مفيدة؟

المحلول

سيتيح لك Eclipse لعمليات بناء جملة اللون وعمليات Unboxing (ولكن ليس واحدا أو آخر). أحصل عليهم على أحمر مشرق: إذا حدث إما، فهذا يعني أنني كنت قذرة في مطابقة المعلمات والحجج.

نصائح أخرى

نعم. في الكسوف:

التفضيلات-> java-> compiler-> أخطاء / تحذيرات -> مشاكل البرمجة المحتملة-> تحويلات الملاكمة والبرنامج

لسوء الحظ ليس هناك. هذه هي واحدة من المشكلات التي تحتوي على أرقام Unboxing السيارات. يمكنك

  • تهيئةها إلى قيمة افتراضية، مثل private Integer value = 0
  • تحقق من فارغة return value != null ? value : 0

أنا شخصيا أفضل الطريقة الأولى. بشكل عام، أعتقد أنك لن يكون لديك الكثير من الحالات حيث يجب أن يكون لديك رقم فارغ.

أيضا، لماذا تستخدم عدد صحيح كبير لتخزين القيمة. إذا كنت تعيد فقط قليلا، فلماذا لا تخزنها بهذه الطريقة؟

أشك في أن هذا سيكون حالة تحذير. هذه هي واحدة من المراوغة من الملاكمة التلقائية.

يعالج جوشوا بلوش هذا في كتابه "جافا فعال". في الأساس، يحاول المحول البرمجي أن يفعل المزيد من أجلك أن ما هو متوقع. بمعنى آخر، هذا النوع من القضية مرتبط بشكل شائع بالاستخدام ونتيجة لذلك، من الصعب "اكتشاف الخطأ" كخطأ هو الخطأ، متحدثا دلاليا، ببساطة ليس هناك.

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