.. This file is part of the OpenDSA eTextbook project. See .. http://opendsa.org for more details. .. Copyright (c) 2012-2020 by the OpenDSA Project Contributors, and .. distributed under an MIT open source license. .. avmetadata:: :author: Molly Domino More on Generics ================ Objectives ---------- Upon completion of this module, students will be able to: * Determine when a generic needs to be bounded * Write and use methods and classes that use bounded generic parameters * Write and use bounded generic methods * Become familiar with syntax for wildcards Suggested Reading: ~~~~~~~~~~~~~~~~~~ **Java Interlude 8 Generics Once Again** from `Data Structures and Abstractions with Java, 4th edition by Frank M. Carrano and Timothy Henry `_ .. _Generics2Intro: Interactive: More on Generics ----------------------------- .. admonition:: Follow Along, Practice and Explore Download to run and explore the corresponding project from the video on your own in eclipse. The project CS2-Support is required for the sample project above. It is also used in your course projects. To download the CS2-Support you must first complete the configuration steps for your first lab. You will then be able to download it via eclipse using the blue down arrow icon or using the Project Menu and selecting "Download Assignment..." .. raw:: html exGenerics.zip
MoreOnGenerics.pdf .. raw:: html
.. _Generics2Reflect: Interactive: Reflecting on Generics ----------------------------------- .. raw:: html
Related Resources ~~~~~~~~~~~~~~~~~ .. raw:: html .. _Generics2Explained: Sample Declarations of Generic Methods Explained ------------------------------------------------ **The format for declaring a Generic method is as follows:** .. code-block:: java methodModifiers returnType methodName(methodParameters) Note the use of the generic parameters placed inside the angle brackets. **Example 1** Below is one example of how you may declare a Generic method. .. code-block:: java public static void sort(T[] items, Comparator comp) The T following the static keyword and enclosed within the angle brackets represents the generic parameter for the sort method. The T should also appear in the method parameter list. The second method parameter ``Comparator comp`` is our way of specifying that ``comp`` must be an object that implements the ``Comparator`` interface for type ``T`` or for a superclass of type ``T`` We use this approach to specify restrictions, for example, you can define a class that implements ``Comparator`` and use it to sort an array of Integer objects or an array of Double objects **Example 2** Below is another example Generic method declaration. .. code-block:: java public static > void sort(List list) The use of ``>`` specifies that the generic parameter ``T`` must implement the interface ``Comparable``. The method parameter list (the object being sorted) is of type ``List``. Checkpoint 1 ------------ .. avembed:: Exercises/SWDesignAndDataStructs/Generics2Checkpoint1Summ.html ka :long_name: Checkpoint 1 .. _Generics2Wildcard: Interactive: Bounded Wildcard Examples -------------------------------------- .. admonition:: Follow Along, Practice and Explore Download to run and explore the corresponding project from the video on your own in eclipse. The project CS2-Support is required for the sample project above. It is also used in your course projects. To download the CS2-Support you must first complete the configuration steps for your first lab. You will then be able to download it via eclipse using the blue down arrow icon or using the Project Menu and selecting "Download Assignment..." .. raw:: html exGenerics.zip .. raw:: html
Related Resources ~~~~~~~~~~~~~~~~~ .. raw:: html Programming Practice: Generics 1 -------------------------------- .. extrtoolembed:: 'Programming Practice: Generics 1' :workout_id: 1919