జావా 8లో, Optional
విలువ ఉనికిని లేదా లేకపోవడాన్ని సూచించడానికి తరగతి ఒక మార్గంగా పరిచయం చేయబడింది. NullPointerExceptions
శూన్యమైన లేదా లేని వస్తువులతో పని చేస్తున్నప్పుడు సంభవించే వాటిని నిరోధించడంలో సహాయపడటానికి ఇది రూపొందించబడింది .
తరగతి Optional
అనేది శూన్య విలువను కలిగి ఉండకపోవచ్చు లేదా కలిగి ఉండకపోవచ్చు. దీనికి రెండు రాష్ట్రాలు ఉన్నాయి: empty
మరియు present
. విలువ ఉన్నట్లయితే, Optional
తరగతి విలువతో పని చేయడానికి అనేక పద్ధతులను అందిస్తుంది, వీటిలో get()
, ఉన్నట్లయితే విలువను అందిస్తుంది లేదా NoSuchElementException
లేనట్లయితే aని విసిరివేస్తుంది.
Optional
శూన్య పాయింటర్ మినహాయింపులను నివారించడానికి ఉపయోగించే ఉదాహరణ ఇక్కడ ఉంది :
vbnetOptional<String> name = Optional.ofNullable(getName());
if (name.isPresent()) {
System.out.println("Name is: " + name.get());
} else {
System.out.println("Name is not present.");
}
ఈ ఉదాహరణలో, పద్ధతి ద్వారా అందించబడిన విలువను కలిగి ఉన్న వస్తువును ofNullable()
సృష్టించడానికి పద్ధతి ఉపయోగించబడుతుంది , అది శూన్యం కావచ్చు. విలువ ఉందో లేదో తనిఖీ చేయడానికి ఈ పద్ధతి ఉపయోగించబడుతుంది మరియు విలువ ఉన్నట్లయితే దాన్ని తిరిగి పొందడానికి పద్ధతి ఉపయోగించబడుతుంది.Optional
getName()
isPresent()
get()
మీరు విలువను కలిగి లేని వస్తువును కాల్ చేయడానికి ప్రయత్నిస్తే, get()
a విసిరివేయబడుతుంది . దీన్ని నివారించడానికి, మీరు పద్ధతిని ఉపయోగించవచ్చు , ఇది ఉంటే విలువను అందిస్తుంది లేదా లేకపోతే డిఫాల్ట్ విలువ:Optional
NoSuchElementException
orElse()
vbnetString name = Optional.ofNullable(getName()).orElse("Unknown");
System.out.println("Name is: " + name);
ఈ ఉదాహరణలో, getName()
శూన్యాన్ని తిరిగి ఇస్తే, orElse()
పద్ధతి బదులుగా "తెలియని" స్ట్రింగ్ను అందిస్తుంది.
Optional
సేకరణలతో కూడా ఉపయోగించవచ్చు, ఇలా:
vbnetList<String> names = Arrays.asList("Alice", "Bob", "Charlie");
Optional<String> anyNameStartingWithA = names.stream()
.filter(name -> name.startsWith("A"))
.findAny();
if (anyNameStartingWithA.isPresent()) {
System.out.println("A name is present: " + anyNameStartingWithA.get());
} else {
System.out.println("No names starting with A are present.");
}
ఈ ఉదాహరణలో, stream()
పేర్ల స్ట్రీమ్ను రూపొందించడానికి ఉపయోగించబడుతుంది, ఇది "A"తో ప్రారంభమయ్యే ఏవైనా పేర్లను కనుగొనడానికి ఫిల్టర్ చేయబడుతుంది. ఏదైనా సరిపోలే మూలకాన్ని తిరిగి పొందడానికి ఈ findAny()
పద్ధతి ఉపయోగించబడుతుంది, ఇది ఒక వలె తిరిగి ఇవ్వబడుతుంది Optional
.
తరగతి Optional
శూన్య విలువలతో పని చేయడానికి సౌకర్యవంతమైన మార్గాన్ని అందిస్తుంది మరియు మీ కోడ్లో శూన్య పాయింటర్ మినహాయింపులను నిరోధించడంలో సహాయపడుతుంది. ఏది ఏమైనప్పటికీ, ఇది సరైన శూన్య నిర్వహణ మరియు ఎర్రర్ తనిఖీకి ప్రత్యామ్నాయంగా కాకుండా తెలివిగా ఉపయోగించాలి.....
Optional Example
Create the following Java program using any editor of your choice in, say, C:\> JAVA.
import java.util.Optional;
public class Java8Tester {
public static void main(String args[]) {
Java8Tester java8Tester = new Java8Tester();
Integer value1 = null;
Integer value2 = new Integer(10);
//Optional.ofNullable - allows passed parameter to be null.
Optional<Integer> a = Optional.ofNullable(value1);
//Optional.of - throws NullPointerException if passed parameter is null
Optional<Integer> b = Optional.of(value2);
System.out.println(java8Tester.sum(a,b));
}
public Integer sum(Optional<Integer> a, Optional<Integer> b) {
//Optional.isPresent - checks the value is present or not
System.out.println("First parameter is present: " + a.isPresent());
System.out.println("Second parameter is present: " + b.isPresent());
//Optional.orElse - returns the value if present otherwise returns
//the default value passed.
Integer value1 = a.orElse(new Integer(0));
//Optional.get - gets the value, value should be present
Integer value2 = b.get();
return value1 + value2;
}
}