src/share/classes/sun/reflect/generics/reflectiveObjects/WildcardTypeImpl.java

Print this page


   1 /*
   2  * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


 186 
 187         if (lowerBounds.length > 0)
 188             sb.append("? super ");
 189         else {
 190             Type[] upperBounds = getUpperBounds();
 191             if (upperBounds.length > 0 && !upperBounds[0].equals(Object.class) ) {
 192                 bounds = upperBounds;
 193                 sb.append("? extends ");
 194             } else
 195                 return "?";
 196         }
 197 
 198         assert bounds.length > 0;
 199 
 200         boolean first = true;
 201         for(Type bound: bounds) {
 202             if (!first)
 203                 sb.append(" & ");
 204 
 205             first = false;
 206             if (bound instanceof Class)
 207                 sb.append(((Class)bound).getName() );
 208             else
 209                 sb.append(bound.toString());
 210         }
 211         return sb.toString();
 212     }
 213 
 214     @Override
 215     public boolean equals(Object o) {
 216         if (o instanceof WildcardType) {
 217             WildcardType that = (WildcardType) o;
 218             return
 219                 Arrays.equals(this.getLowerBounds(),
 220                               that.getLowerBounds()) &&
 221                 Arrays.equals(this.getUpperBounds(),
 222                               that.getUpperBounds());
 223         } else
 224             return false;
 225     }
 226 
 227     @Override
 228     public int hashCode() {
 229         Type [] lowerBounds = getLowerBounds();
   1 /*
   2  * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any


 186 
 187         if (lowerBounds.length > 0)
 188             sb.append("? super ");
 189         else {
 190             Type[] upperBounds = getUpperBounds();
 191             if (upperBounds.length > 0 && !upperBounds[0].equals(Object.class) ) {
 192                 bounds = upperBounds;
 193                 sb.append("? extends ");
 194             } else
 195                 return "?";
 196         }
 197 
 198         assert bounds.length > 0;
 199 
 200         boolean first = true;
 201         for(Type bound: bounds) {
 202             if (!first)
 203                 sb.append(" & ");
 204 
 205             first = false;
 206             sb.append(bound.getTypeName());



 207         }
 208         return sb.toString();
 209     }
 210 
 211     @Override
 212     public boolean equals(Object o) {
 213         if (o instanceof WildcardType) {
 214             WildcardType that = (WildcardType) o;
 215             return
 216                 Arrays.equals(this.getLowerBounds(),
 217                               that.getLowerBounds()) &&
 218                 Arrays.equals(this.getUpperBounds(),
 219                               that.getUpperBounds());
 220         } else
 221             return false;
 222     }
 223 
 224     @Override
 225     public int hashCode() {
 226         Type [] lowerBounds = getLowerBounds();