Implementation of a {@link List} in which allows a mix of objects, but is typed for a particular object. It isdesigned to allow elements of the list type and {@link Proxy} objects for objects of that type in the list.
For example, you can declare this list as List<Book> but instead of only Book objects, you can add Proxy<Book> objects. When you call {@link #get} to get an element from the list, it will either returnthe element straight away if it is of the correct type, or when it's a proxy object, it will get the actual object from the proxy. This allows the proxies to defer the work of create/fetching the object until its actually used, but it makes the use of the {@link #get} method potentially much more expensive. The overhead of this unwrappingis only paid when proxy objects are in the list, otherwise the runtime performance should mirror a normal list implementation.
@author Michael Grove @since 0.7 @version 0.7
|
|