2017-01-27 15 views
5

गूगल के अमरूद पुस्तकालय राज्यों से Preconditions के लिए जावाडोक कि:ऑब्जेक्ट्स.क्वायर नॉननुल() का उपयोग क्यों नहीं किया जाना चाहिए अगर गुवा से com.google.common का उपयोग किया जाता है?

परियोजनाओं जो com.google.common का उपयोग आम तौर पर Objects.requireNonNull(Object) के उपयोग से बचना चाहिए। इसके बजाय, स्थिति का उचित उपयोग checkNotNull(Object) या Verify.verifyNotNull(Object) का उपयोग करें। (यह संदेश-स्वीकार्य ओवरलोड के लिए भी जाता है।)

इस अनुशंसा के पीछे प्रेरणा क्या है? मैं जावाडोक में कोई नहीं ढूंढ सकता।

मेरा मतलब है, वे काफी वही काम करते हैं, और इन मामलों में मानक एपीआई का उपयोग करना आम तौर पर बेहतर होता है (उदाहरण के लिए, जोडा-टाइम के पीछे लोग अब लोगों को java.time का उपयोग करने की सलाह देते हैं, जो कि अपने आप को बहुत कम करते हैं ढांचा)।

उदाहरण के लिए, इनपुट सत्यापन के इन दो पंक्तियों में एक ही काम करते हैं:

class PreconditionsExample { 
    private String string; 

    public PreconditionsExample(String string) { 
    this.string = Objects.requireNonNull(string, "string must not be null"); 
    this.string = Preconditions.checkNotNull(string, "string must not be null"); 
    } 
} 

उत्तर

4

अमरूद के संस्करण भार के कि एक प्रारूप स्ट्रिंग और तर्क स्वीकार की एक संख्या प्रदान करता है। PreconditionsExplained विकी को उद्धृत करने के लिए:

हम अपनी खुद की पूर्व शर्त जांच को रोल करना पसंद करते हैं उदा। कुछ कारणों से अपाचे कॉमन्स से तुलनीय उपयोगिताओं। संक्षेप में:

...

  • सरल, "printf शैली" अपवाद संदेशों varargs।
+0

आह, मैं देखता हूं! मैंने जवाडॉक्स में इसका संक्षिप्त उल्लेख किया होगा। मुझे लगता है, लेकिन मुझे लगता है कि आप एक उदाहरण जोड़कर अपने उत्तर को और भी बेहतर बना सकते हैं जहां 'ऑब्जेक्ट्स.क्वायर नॉननुल()' पर्याप्त नहीं है। – Magnilex

2

AFAIK (यह लाभ भी कारण है कि हम checkNotNull Objects.requireNonNull JDK 7 में शुरू की अधिक का उपयोग जारी रखने की सलाह देते हैं होता है),

  1. स्थिरता
  2. निम्न कार्य के अतिरिक्त तरीका के लिए के लिए,

    String world = "world"; Preconditions.checkNotNull(string, "Hello %s",world);

ऑब्जेक्ट्स के साथ, आपको String.format का उपयोग करना होगा। इसके अलावा, दोनों विधियों के कार्यान्वयन समान है।

संबंधित मुद्दे