Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

Java 9 में @SafeVarargs क्यों आवश्यक है?

वैरार्ग्स और जेनेरिक्स की समस्या

वैरार्ग्स (varargs) कार्यक्षमता Java में उन मेथड्स बनाने की सुविधा के लिए पेश की गई थी जो बिना ऐरे-टाइप पैरामीटर्स या उसी मेथड के ओवरलोडेड संस्करणों का सहारा लिए वेरिएबल संख्या में आर्गुमेंट्स स्वीकार कर सकें।

Java 9 से पहले, यदि वैरार्ग मेथड्स जेनेरिक्स के साथ उपयोग किए जाते थे, तो एक चेतावनी संदेश आता था। भले ही सभी मेथड्स हीप पॉल्यूशन नहीं बनाते, कंपाइलर जेनेरिक्स के साथ उपयोग किए गए सभी वैरार्ग मेथड्स के लिए चेतावनी दिखाता था। इसी कारण Java 9 में @SafeVarargs एनोटेशन जोड़ा गया ताकि इन चेतावनियों से बचा जा सके। यदि यह एनोटेशन जोड़ा जाता है, तो कंपाइलर ये चेतावनियां रोक देता है।

कंपाइल कमांड

javac -Xlint:unchecked SafeVarargsTest1.java

चेतावनी के साथ उदाहरण

import java.util.Arrays;
import java.util.List;

public class SafeVarargsTest1 {
    public static void main(String args[]) {
        SafeVarargsTest1 test = new SafeVarargsTest1();
        test.varargsMethod(Arrays.asList("Adithya", "Jaidev"), Arrays.asList("Raja", "Chaitanya"));
    }
    private void varargsMethod(List<String>... list) {
        for(List list1: list)
            System.out.println(list1);
    }
}

चेतावनी आउटपुट

SafeVarargsTest.java:7: warning: [unchecked] unchecked generic array creation for varargs parameter of type List[]
...
SafeVarargsTest.java:9: warning: [unchecked] Possible heap pollution from parameterized vararg type List
...

@SafeVarargs के साथ उदाहरण

import java.util.Arrays;
import java.util.List;

public class SafeVarargsTest2 {
    public static void main(String args[]) {
        SafeVarargsTest2 test = new SafeVarargsTest2();
        test.varargsMethod(Arrays.asList("Adithya", "Jaidev"), Arrays.asList("Raja", "Chaitanya"));
    }
    @SafeVarargs
    private void varargsMethod(List<String>... list) {
        for(List list1: list)
            System.out.println(list1);
    }
}

आउटपुट (कोई चेतावनी नहीं)

[Adithya, Jaidev] [Raja, Chaitanya]

@SafeVarargs एनोटेशन डेवलपर को इंगित करता है कि वैरार्ग्स पैरामीटर का उपयोग सुरक्षित है, जिससे अनावश्यक चेतावनियां दब जाती हैं।

  1. - Java में वैपर क्लास की आवश्यकता क्यों है?

    एक वैपर क्लास एक क्लास है जिसमें प्रिमिटिव डेटा टाइप्स (int, char, short, byte, आदि) होते हैं। दूसरे शब्दों में, वैपर क्लासेस प्रिमिटिव डेटा टाइप्स (int, char, short, byte, आदि) को ऑब्जेक्ट्स के रूप में उपयोग करने का तरीका प्रदान करती हैं। ये वैपर क्लासेस java.util पैकेज के अंतर्गत आती हैं। हमें वै

  1. - Java में ArrayList इटरेशन में महारत: 5 प्रभावी लूपिंग तकनीकें

    इस ट्यूटोरियल में, हम Java में ArrayList के माध्यम से इटरेट करने के पांच अलग-अलग तरीकों को देखते हैं। Java 8 तक, हम forEach मेथड के साथ-साथ इटरेटर क्लास का उपयोग करके ArrayList पर लूप कर सकते हैं। ArrayList पर लूप करना ArrayList पर लूप करने के मुख्य रूप से 5 अलग-अलग तरीके हैं क्लासिक For Loop एडवां

  1. - Java गाइड: List को Array में बदलें (और वापस) toArray() और Arrays.asList() के साथ

    List और Array के बीच बदलना Java में एक बहुत ही सामान्य ऑपरेशन है। Java में List को Array में बदलने का सबसे अच्छा और आसान तरीका .toArray() मेथड का उपयोग करना है। इसी तरह, हम Arrays.asList() मेथड का उपयोग करके Array को वापस List में बदल सकते हैं। नीचे दिए गए उदाहरण दिखाते हैं कि List of String और List