<< Chapter < Page Chapter >> Page >
Figure 7 - Answer 6.
Q06.java:56: error: method display in class Q06 cannot be applied to given types;display(listC); ^required: ArrayList<? super Frame>found: ArrayList<JFrame>reason: actual argument ArrayList<JFrame>cannot be converted to ArrayList<? super Frame>by method invocation conversion 1 error

Back to Question 6

Answer 5

True. This program illustrates the use of a lower bounded wildcard to define a generic method thatwill accept an incoming reference to an object of a generic class where the parameter type for theobject is equal to or above the type of the wildcard in the inheritance hierarchy. The lowerbounded wildcard type for the display method is JFrame. Therefore, the display method willaccept references to ArrayList objects for parameter types JFrame, Frame, Window, Container,Component, or Object

Back to Question 5

Answer 4

False. This program illustrates the fact that a parameter of type Object is not the same as anunbounded wildcard parameter. The program refuses to compile and produces the errors shown in Figure 8 .

Figure 8 - Answer 4.
Q04.java:31: error: method display in class Q04 cannot be applied to given types;display(listA); ^required: ArrayList<Object>found: ArrayList<Button>reason: actual argument ArrayList<Button>cannot be converted to ArrayList<Object>by method invocation conversionQ04.java:40: error: method display in class Q04 cannot be applied to given types;display(listB); ^required: ArrayList<Object>found: ArrayList<Label>reason: actual argument ArrayList<Label>cannot be converted to ArrayList<Object>by method invocation conversion 2 errors

Back to Question 4

Answer 3

True. This program illustrates two scenarios where an unbounded wildcard is a useful approach:

1. When you are writing a method that can be implemented using functionality provided in theObject class. The getClass method that is called in the displaymethod is defined in the Object class.

2. When the code in a generic method doesn't depend on the type parameter.An if-else statement along with specific casts is used in the display method to isolate the calls to the getText and getLabel methods from the type parameter.

Back to Question 3

Answer 2

True. This program illustrates the use of upper bounded wildcards. The method named display will acceptand process a reference to an ArrayList object whose element types are Component or any subclassof Component. Methods that are defined in or inherited into the Component class can be calledon the elements with no requirement for a cast. Methods that are not defined in or inherited into the Component class but are defined in the element classescan be called on the elements after casting to the element type.

Back to Question 2

Answer 1

False. This program will not compile. The method named display will only accept and process a reference to an ArrayList object whose element are oftype Component. ArrayList objects whose element types are subclasses of Component do not satisfy that requirement. An attempt to compile the programproduces the errors shown in Figure 9 .

Figure 9 - Answer 1.
Q01.java:34: error: method display in class Q01 cannot be applied to given types;display(listA); ^required: ArrayList<Component>found: ArrayList<Button>reason: actual argument ArrayList<Button>cannot be converted to ArrayList<Component>by method invocation conversionQ01.java:43: error: method display in class Q01 cannot be applied to given types;display(listB); ^required: ArrayList<Component>found: ArrayList<Label>reason: actual argument ArrayList<Label>cannot be converted to ArrayList<Component>by method invocation conversion 2 errors

Back to Question 1

Miscellaneous

This section contains a variety of miscellaneous information.

Housekeeping material
  • Module name: Java4270r: Review of Wildcards
  • File: Java4270r.htm
  • Published: 10/24/13
Disclaimers:

Financial : Although the Connexions site makes it possible for you to download aPDF file for this module at no charge, and also makes it possible for you to purchase a pre-printed version of the PDF file, youshould be aware that some of the HTML elements in this module may not translate well into PDF.

I also want you to know that, I receive no financial compensation from the Connexions website even if you purchase the PDF version ofthe module.

In the past, unknown individuals have copied my modules from cnx.org, converted them to Kindle books, and placed them for sale onAmazon.com showing me as the author. I neither receive compensation for those sales nor do I know who does receive compensation. If youpurchase such a book, please be aware that it is a copy of a module that is freely available on cnx.org and that it was made andpublished without my prior knowledge.

Affiliation : I am a professor of Computer Information Technology at Austin Community College in Austin, TX.

-end-

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Object-oriented programming (oop) with java. OpenStax CNX. Jun 29, 2016 Download for free at https://legacy.cnx.org/content/col11441/1.201
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Object-oriented programming (oop) with java' conversation and receive update notifications?

Ask