ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 6 · 2లో పాఠం 2కోర్సులో 12/14~15 min
మాడ్యూల్ పాఠాలు (2/2)

జావాలో జెనరిక్స్

జెనరిక్స్ (జెనరిక్ రకాలు) తరగతులు, ఇంటర్‌ఫేస్‌లు మరియు పద్ధతులను వివిధ రకాల పారామీటర్‌లుగా ఆపరేట్ చేయడానికి జావాలో ప్రవేశపెట్టబడ్డాయి. ఇది కంపైల్-టైమ్ రకం భద్రతను నిర్ధారిస్తుంది మరియు రన్‌టైమ్‌లో ఖరీదైన స్పష్టమైన ప్రసారాలను నివారిస్తుంది.

సాధారణ తరగతులు

<T> యాంగిల్ బ్రాకెట్‌లను ఉపయోగించి జెనరిక్ క్లాస్ నిర్వచించబడింది, ఇక్కడ T క్లాస్ ఇన్‌స్టాంటియేట్ చేయబడినప్పుడు పేర్కొనబడే రకానికి ప్లేస్‌హోల్డర్‌గా పనిచేస్తుంది.

Java
public class Box<T> {
    private T content;

    public void setContent(T content) {
        this.content = content;
    }

    public T getContent() {
        return content;
    }
}

Box ఆబ్జెక్ట్‌ని సృష్టిస్తున్నప్పుడు, మేము అసలు రకాన్ని పేర్కొంటాము:

Java
Box<Integer> integerBox = new Box<>();
integerBox.setContent(123);
int value = integerBox.getContent(); // No cast needed!

సాధారణ పద్ధతులు

మీరు వివిధ రకాల పారామితులను ఆమోదించగల ఒకే సాధారణ పద్ధతిని నిర్వచించవచ్చు. పద్ధతి యొక్క రిటర్న్ రకానికి ముందు టైప్ పరామితి ఉంచబడుతుంది.

Java
public static <E> void printArray(E[] elements) {
    for (E element : elements) {
        System.out.println(element);
    }
}

వైల్డ్‌కార్డ్‌లు మరియు సరిహద్దు రకాలు

నిర్దిష్ట రకాన్ని లేదా దాని ఉపవర్గాలను ఆమోదించడానికి extends కీవర్డ్ (ఎగువ బౌండ్) ఉపయోగించి జెనరిక్ ద్వారా ఆమోదించబడిన రకాలను మేము పరిమితం చేయవచ్చు.

Java
public static <T extends Number> void processNumber(T number) {
    // Accepts Integer, Double, Float, etc.
    System.out.println(number.doubleValue());
}

మీరే ప్రయత్నించండి

వ్యాయామం#java.m6.l2.e1
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

Tని తిరిగి ఇచ్చే గెట్టర్ getValue()ని మరియు ప్రైవేట్ వేరియబుల్ విలువను సెట్ చేసే సెట్టర్ setValue(T విలువ)ని నిర్వచించడం ద్వారా జెనరిక్ క్లాస్ బాక్స్‌ను పూర్తి చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

సాధారణ రకం పరామితి `T`ని ఉపయోగించి సరైన సంతకంతో పద్ధతులను వ్రాయండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం#java.m6.l2.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

ఒక స్టాటిక్ జెనరిక్ మెథడ్ ప్రింట్‌అరేని సృష్టించండి, ఇది టైప్ T[] అనే శ్రేణిని తీసుకుంటుంది మరియు ప్రతి మూలకాన్ని ఒక్కో లూప్‌ని ఉపయోగించి ప్రింట్ చేస్తుంది.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

టైప్ పరామితి `<T>` తప్పనిసరిగా `స్టాటిక్` తర్వాత మరియు రిటర్న్ టైప్ `శూన్యం` ముందు ఉంచాలి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం#java.m6.l2.e3
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

స్ట్రింగ్‌తో పారామితి చేయబడిన కంటైనర్ ఇంటర్‌ఫేస్‌ను అమలు చేసే స్టాటిక్ క్లాస్ స్ట్రింగ్‌కంటైనర్‌ను సృష్టించండి. స్ట్రింగ్ పరామితిని తీసుకునే కన్స్ట్రక్టర్‌ను నిర్వచించండి మరియు getItem() పద్ధతిని అమలు చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

సాధారణ రకం `T`ని తరగతి సంతకంలో `స్ట్రింగ్`తో మరియు `getItem()` రిటర్న్ రకంలో ప్రత్యామ్నాయం చేయండి.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది