MumbleCloseable
    Brian Goetz 
    brian.goetz at oracle.com
       
    Tue Jun 25 09:41:07 PDT 2013
    
    
  
Following along this line, some structural choices for hint annotations. 
  I think the key hint is "definitely holds", though we might also want 
"definitely does not hold".
interface MayHoldCloseableResource extends AutoCloseable {
     void close();  // no exceptions
     @interface DefinitelyHolds { }
}
...
package java.nio;
class Files {
     ...
     @MayHoldCloseableResource.DefinitelyHolds
     Stream<String> lines(Path p) { ... }
}
or...
interface MayHoldCloseableResource extends AutoCloseable {
     void close();  // no exceptions
     enum HoldHint { YES, NO }
     @interface Hint {
         HoldHint value();
     }
}
...
package java.nio;
class Files {
     ...
     @MayHoldCloseableResource.Hint(YES)
     Stream<String> lines(Path p) { ... }
}
On 6/25/2013 11:37 AM, Brian Goetz wrote:
> Actually,
>
> MayHoldCloseableResource
>
> seems not too bad.  It is a tad wordy, but relatively few people will
> have to type it, and reading it is pretty clear -- this object may hold
> a closeable resource.
>
> On 6/25/2013 11:14 AM, Brian Goetz wrote:
>>> These together provide something better than any other related
>>> schemes I know. I think that if we cam up with stunningly
>>> good names for these, the plan would be completely uncontroversial.
>>
>> MayHoldResource
>> HoldsResource
>> MayRequireClosing
>> ...
    
    
More information about the lambda-libs-spec-experts
mailing list