// generics/InheritBounds.java // (c)2021 MindView LLC: see Copyright.txt // We make no guarantees that this code is fit for any purpose. // Visit http://OnJava8.com for more book information. class HoldItem { T item; HoldItem(T item) { this.item = item; } T getItem() { return item; } } class WithColor2 extends HoldItem { WithColor2(T item) { super(item); } java.awt.Color color() { return item.getColor(); } } class WithColorCoord2 extends WithColor2 { WithColorCoord2(T item) { super(item); } int getX() { return item.x; } int getY() { return item.y; } int getZ() { return item.z; } } class Solid2 extends WithColorCoord2 { Solid2(T item) { super(item); } int weight() { return item.weight(); } } public class InheritBounds { public static void main(String[] args) { Solid2 solid2 = new Solid2<>(new Bounded()); solid2.color(); solid2.getY(); solid2.weight(); } }