< prev index next >

src/jdk.xml.bind/share/classes/com/sun/codemodel/internal/JClass.java

Print this page


   1 /*
   2  * Copyright (c) 1997, 2012, 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


 287     /**
 288      * Returns true if this class is a parameterized class.
 289      */
 290     public final boolean isParameterized() {
 291         return erasure()!=this;
 292     }
 293 
 294     /**
 295      * Create "? extends T" from T.
 296      *
 297      * @return never null
 298      */
 299     public final JClass wildcard() {
 300         return new JTypeWildcard(this);
 301     }
 302 
 303     /**
 304      * Substitutes the type variables with their actual arguments.
 305      *
 306      * <p>
 307      * For example, when this class is Map&lt;String,Map&lt;V>>,
 308      * (where V then doing
 309      * substituteParams( V, Integer ) returns a {@link JClass}
 310      * for {@code Map<String,Map<Integer>>}.
 311      *
 312      * <p>
 313      * This method needs to work recursively.
 314      */
 315     protected abstract JClass substituteParams( JTypeVar[] variables, List<JClass> bindings );
 316 
 317     public String toString() {
 318         return this.getClass().getName() + '(' + name() + ')';
 319     }
 320 
 321 
 322     public final JExpression dotclass() {
 323         return JExpr.dotclass(this);
 324     }
 325 
 326     /** Generates a static method invocation. */
 327     public final JInvocation staticInvoke(JMethod method) {


   1 /*
   2  * Copyright (c) 1997, 2015, 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


 287     /**
 288      * Returns true if this class is a parameterized class.
 289      */
 290     public final boolean isParameterized() {
 291         return erasure()!=this;
 292     }
 293 
 294     /**
 295      * Create "? extends T" from T.
 296      *
 297      * @return never null
 298      */
 299     public final JClass wildcard() {
 300         return new JTypeWildcard(this);
 301     }
 302 
 303     /**
 304      * Substitutes the type variables with their actual arguments.
 305      *
 306      * <p>
 307      * For example, when this class is {@code Map<String,Map<V>>},
 308      * (where V then doing
 309      * substituteParams( V, Integer ) returns a {@link JClass}
 310      * for {@code Map<String,Map<Integer>>}.
 311      *
 312      * <p>
 313      * This method needs to work recursively.
 314      */
 315     protected abstract JClass substituteParams( JTypeVar[] variables, List<JClass> bindings );
 316 
 317     public String toString() {
 318         return this.getClass().getName() + '(' + name() + ')';
 319     }
 320 
 321 
 322     public final JExpression dotclass() {
 323         return JExpr.dotclass(this);
 324     }
 325 
 326     /** Generates a static method invocation. */
 327     public final JInvocation staticInvoke(JMethod method) {


< prev index next >