On Tue, 28 Nov 2023 15:49:27 GMT, Andy Goryachev <ango...@openjdk.org> wrote:

>> modules/javafx.graphics/src/main/java/javafx/css/CssMetaData.java line 332:
>> 
>>> 330: 
>>> 331:     /**
>>> 332:      * Utility method which combines {@code CssMetaData} items in one 
>>> unmodifiable list with size equal
>> 
>> Did you mean `immutable`?  As far as I know, the meaning of `unmodifiable` 
>> (in the Java world) means that the caller can't modify it, but the  provider 
>> still can.  For example:
>> 
>>       List<String> list = new ArrayList<>();
>>       List<String> unmodifiableList = Collections.unmodifiableList(list);
>>       list.add("A");  // both lists changed
>> 
>> Quote from collections docs:
>> 
>>> Note that changes to the backing collection might still be possible, and if 
>>> they occur, they are visible through the unmodifiable view. Thus, an 
>>> unmodifiable view collection is not necessarily immutable. However, if the 
>>> backing collection of an unmodifiable view is effectively immutable, or if 
>>> the only reference to the backing collection is through an unmodifiable 
>>> view, the view can be considered effectively immutable.
>
> Since this is not an observable list, the two are semantically equivalent, in 
> my opinion.
> 
> @kevinrushforth should we say "immutable" here?

Yes, I think using the term "immutable" makes sense for the reasons John 
mentioned.

>> modules/javafx.graphics/src/main/java/javafx/css/CssMetaData.java line 344:
>> 
>>> 342:         List<CssMetaData<? extends Styleable, ?>> list,
>>> 343:         CssMetaData<? extends Styleable, ?>... items)
>>> 344:     {
>> 
>> The method is not actually making use of `CssMetaData`, so a more generic 
>> utility method would have worked as well:
>> 
>>          public static <T> List<T> combine(List<T> list, T... items)
>> 
>> It could be placed in some kind of utility class (and in fact, many libs 
>> offer such a method already).
>
> Yeah, perhaps even in List?  
> JavaFX does not provide a common utility package, and I am trying to limit 
> the scope by narrowing the accepted data type here.

I think having it in this class is good given the intent. It allows for a more 
narrowly-focused API.

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

PR Review Comment: https://git.openjdk.org/jfx/pull/1296#discussion_r1408490325
PR Review Comment: https://git.openjdk.org/jfx/pull/1296#discussion_r1408491827

Reply via email to