InstanceType.java
package com.github.jonasrutishauser.javax.enterprise.inject.impl;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Arrays;
import javax.enterprise.inject.Instance;
class InstanceType implements ParameterizedType {
private final Type[] types;
public InstanceType(Type typeArgument) {
this.types = new Type[] {typeArgument};
}
@Override
public Type[] getActualTypeArguments() {
return types;
}
@Override
public Type getRawType() {
return Instance.class;
}
@Override
public Type getOwnerType() {
return null;
}
@Override
public int hashCode() {
return Arrays.hashCode(types) ^ Instance.class.hashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj instanceof ParameterizedType) {
ParameterizedType other = (ParameterizedType) obj;
return other.getOwnerType() == null && Instance.class.equals(other.getRawType())
&& Arrays.equals(types, other.getActualTypeArguments());
}
return false;
}
}