Java 8 Optional method get throws an exception when does not exists the element. Why does throws exception instead of return null or an Optional empty?
            Asked
            
        
        
            Active
            
        
            Viewed 379 times
        
    -6
            
            
        - 
                    1What is an _empty value_? – Sotirios Delimanolis Jun 11 '15 at 15:18
- 
                    6That's the whole point of Optional: to force you to handle the case when there is no value appropriately. Strongly related: http://stackoverflow.com/questions/23454952/uses-for-java8-optional – assylias Jun 11 '15 at 15:19
- 
                    "staticOptional – Homilzio Trovoada Santos Jun 11 '15 at 15:23empty() Returns an empty Optional instance." Thanks, @assylias 
- 
                    So you want an empty `Optional` to return another empty `Optional`? – Sotirios Delimanolis Jun 11 '15 at 15:28
- 
                    4This is the _entire point_, that it doesn't return `null`. – Louis Wasserman Jun 11 '15 at 15:34
- 
                    I am not sure the downvoting is entirely justified here. Maybe the phrasing of the question is not quite adequate, especially in the alternative options proposed for the Optional.get, but I can see why the OP is confused with regards to the method throwing an Exception. In fact Brian Goetz himself [acknowledges](http://stackoverflow.com/questions/26327957/should-java-8-getters-return-optional-type/26328555#26328555) that this was not a totally fortunate decision – djsecilla May 24 '16 at 09:31
2 Answers
2
            Use .orElse(null) if you want null. The idea of Optional is to force you to explicitly handle the absence of the value.
 
    
    
        Tagir Valeev
        
- 97,161
- 19
- 222
- 334
0
            
            
        You can you Optional.orElse(null) if you need null or the value
Optional optional  = Optional.empty();
System.out.println(optional.orElse(null));
If there is some operation or action you want to perform you an use OptionalifPresent(Consumer operationToPerform)
optional.ifPresent(o->{ // operation to perform
System.out.println(o); });
 
    
    
        Manasi
        
- 765
- 6
- 17
