|
Groovy example source code file (GenericsType.java)
The Groovy GenericsType.java source code/* * Copyright 2003-2011 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.codehaus.groovy.ast; /** * This class is used to describe generic type signatures for ClassNodes. * * @author Jochen Theodorou * @see ClassNode */ public class GenericsType extends ASTNode { private final ClassNode[] upperBounds; private final ClassNode lowerBound; private ClassNode type; private String name; private boolean placeholder; private boolean resolved; private boolean wildcard; public GenericsType(ClassNode type, ClassNode[] upperBounds, ClassNode lowerBound) { this.type = type; this.name = type.isGenericsPlaceHolder() ? type.getUnresolvedName() : type.getName(); this.upperBounds = upperBounds; this.lowerBound = lowerBound; placeholder = type.isGenericsPlaceHolder(); resolved = false; } public GenericsType(ClassNode basicType) { this(basicType, null, null); } public ClassNode getType() { return type; } public void setType(ClassNode type) { this.type = type; } public String toString() { String ret = (type == null || placeholder || wildcard) ? name : type.getName(); if (upperBounds != null) { ret += " extends "; for (int i = 0; i < upperBounds.length; i++) { ret += upperBounds[i].getName(); if (i + 1 < upperBounds.length) ret += " & "; } } else if (lowerBound != null) { ret += " super " + lowerBound.getName(); } return ret; } public ClassNode[] getUpperBounds() { return upperBounds; } public String getName() { return name; } public boolean isPlaceholder() { return placeholder; } public void setPlaceholder(boolean placeholder) { this.placeholder = placeholder; type.setGenericsPlaceHolder(placeholder); } public boolean isResolved() { return resolved || placeholder; } public void setResolved(boolean res) { resolved = res; } public void setName(String name) { this.name = name; } public boolean isWildcard() { return wildcard; } public void setWildcard(boolean wildcard) { this.wildcard = wildcard; } public ClassNode getLowerBound() { return lowerBound; } } Other Groovy examples (source code examples)Here is a short list of links related to this Groovy GenericsType.java source code file: |
... this post is sponsored by my books ... | |
![]() #1 New Release! |
![]() FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.