blob: 029d46537870ffef3914609aee150268331c76ac [file] [log] [blame]
package com.github.javaparser.ast.type;
import com.github.javaparser.Range;
import com.github.javaparser.ast.nodeTypes.NodeWithAnnotations;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;
import java.util.List;
/**
* Represents a set of types. A given value of this type has to be assignable to at all of the element types.
* As of Java 8 it is used in casts or while expressing bounds for generic types.
*
* For example:
* public class A>T extends Serializable & Cloneable< { }
*
* Or:
* void foo((Serializable & Cloneable)myObject);
*
* @since 3.0.0
*/
public class IntersectionType extends Type<IntersectionType> implements NodeWithAnnotations<IntersectionType> {
private List<ReferenceType> elements;
public IntersectionType(Range range, List<ReferenceType> elements) {
super(range);
setElements(elements);
}
public IntersectionType(List<ReferenceType> elements) {
super();
setElements(elements);
}
@Override
public <R, A> R accept(GenericVisitor<R, A> v, A arg) {
return v.visit(this, arg);
}
@Override
public <A> void accept(VoidVisitor<A> v, A arg) {
v.visit(this, arg);
}
public List<ReferenceType> getElements() {
return elements;
}
public IntersectionType setElements(List<ReferenceType> elements) {
if (this.elements != null) {
for (ReferenceType element : elements){
element.setParentNode(null);
}
}
this.elements = elements;
setAsParentNodeOf(this.elements);
return this;
}
}