On Sun, 20 Nov 2022 16:49:16 GMT, Markus KARG <d...@openjdk.org> wrote:

>>> @AlanBateman WDYT?
>> 
>> The long standing and undocumented behavior is unfortunate. I don't think 
>> the 1-arg constructor is fixable while still allowing for lazy behavior. So 
>> I think the only thing we can do is document the existing behavior that a 
>> null element in the enumeration will lead to read or close throwing NPE at a 
>> later time. For the 2-arg constructor then we need to be cautious. This is 
>> very old API and we have to assume the phenomenon that is Hyrum's Law. You 
>> may be right that nobody can reasonably depend on the current behavior but I 
>> think it would need a survey to inform the discussion. I can't tell if this 
>> PR was intended to rehabilitate SequenceInputStream or just a reaction to 
>> seeing that it uses Vector. If the latter then you could just change it to:
>> 
>> var list = new ArrayList<InputStream>();
>> list.add(s1);
>> list.add(s2);
>> e = Collections.enumeration(list);
>> peekNextStream();
>> 
>> and preserve the existing behavior.
>> 
>> While SequenceInputStream may be legacy I guess it would be interesting to 
>> get some idea of usage or usages that use something better in libraries. 
>> Maybe there is a case for InputStream to have a concat method for example.
>
> Indeed my intention solely is to get rid of `Vector`, so I am fine with 
> keeping a low profile and being full backwards compatible. I assume SIS is 
> seldomly used, so opening a can of warms is not worth it (I think). I am 
> perfectly happy with your proposal, but for the sake of brevity I'd rather go 
> with a shorter way of doing the pretty same:
> ```this(Collections.enumeration(Arrays.asList(s1, s2))```
> Are we all fine with that? Otherwise I'd switch this PR back to Alan`s 
> proposal.

N.B.: Regarding usage numbers, I will do a quick poll on Twitter.

-------------

PR: https://git.openjdk.org/jdk/pull/11249

Reply via email to