类com.intellij.psi.PsiTypeParameter源码实例Demo

下面列出了怎么用com.intellij.psi.PsiTypeParameter的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: litho   文件: PsiTypeVariablesExtractor.java
public static ImmutableList<TypeVariableName> getTypeVariables(PsiClass psiClass) {
  PsiTypeParameter[] psiTypeParameters = psiClass.getTypeParameters();

  final List<TypeVariableName> typeVariables = new ArrayList<>(psiTypeParameters.length);
  for (PsiTypeParameter psiTypeParameter : psiTypeParameters) {
    final PsiReferenceList extendsList = psiTypeParameter.getExtendsList();
    final PsiClassType[] psiClassTypes = extendsList.getReferencedTypes();

    final TypeName[] boundsTypeNames = new TypeName[psiClassTypes.length];
    for (int i = 0, size = psiClassTypes.length; i < size; i++) {
      boundsTypeNames[i] = PsiTypeUtils.getTypeName(psiClassTypes[i]);
    }

    final TypeVariableName typeVariable =
        TypeVariableName.get(psiTypeParameter.getName(), boundsTypeNames);
    typeVariables.add(typeVariable);
  }

  return ImmutableList.copyOf(typeVariables);
}
 
public static String print(PsiTypeParameter[] parameters, TranslationContext ctx) {
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < parameters.length; i++) {
        PsiTypeParameter p = parameters[i];
        builder.append(p.getName());
        PsiClassType[] extensions = p.getExtendsList().getReferencedTypes();
        if (extensions.length > 0) {
            builder.append(" extends ");
            for (PsiClassType ext : extensions) {
                builder.append(TypeHelper.printType(ext, ctx));
            }
        }
        if (i != parameters.length - 1) {
            builder.append(", ");
        }
    }
    return builder.toString();
}
 
源代码3 项目: easy_javadoc   文件: VariableGeneratorService.java
/**
 * 获取方法内部的变量
 *
 * @param psiMethod psi方法
 * @return {@link java.util.Map<java.lang.String,java.lang.Object>}
 */
private Map<String, Object> getMethodInnerVariable(PsiMethod psiMethod) {
    Map<String, Object> map = Maps.newHashMap();
    map.put("author", config.getAuthor());
    map.put("methodName", psiMethod.getName());
    map.put("methodReturnType", psiMethod.getReturnType() == null ? "" : psiMethod.getReturnType().getPresentableText());
    map.put("methodParamTypes",
        Arrays.stream(psiMethod.getTypeParameters()).map(PsiTypeParameter::getQualifiedName).toArray(String[]::new));
    map.put("methodParamNames",
        Arrays.stream(psiMethod.getParameterList().getParameters()).map(PsiParameter::getName).toArray(String[]::new));
    return map;
}
 
源代码4 项目: litho   文件: PsiMethodExtractorUtils.java
private static TypeVariableName toTypeVariableName(PsiTypeParameter psiTypeParameter) {
  String typeName = psiTypeParameter.getName();
  TypeName[] typeBounds =
      Arrays.stream(psiTypeParameter.getBounds())
          .filter(PsiType.class::isInstance)
          .map(bound -> PsiTypeUtils.getTypeName((PsiType) bound))
          .toArray(TypeName[]::new);
  return TypeVariableName.get(typeName, typeBounds);
}
 
源代码5 项目: intellij-spring-assistant   文件: PsiCustomUtil.java
@Nullable
public static Map<PsiTypeParameter, PsiType> getTypeParameters(PsiType type) {
  if (type instanceof PsiArrayType) {
    return getTypeParameters(((PsiArrayType) type).getComponentType());
  } else if (type instanceof PsiPrimitiveType) {
    return null;
  } else if (type instanceof PsiClassType) {
    PsiClassType.ClassResolveResult resolveResult =
        PsiClassType.class.cast(type).resolveGenerics();
    if (resolveResult.isValidResult()) {
      return resolveResult.getSubstitutor().getSubstitutionMap();
    }
  }
  return null;
}
 
源代码6 项目: intellij-haxe   文件: HaxeTypeParamPsiMixinImpl.java
@Override
public int getTypeParameterIndex(PsiTypeParameter typeParameter) {
  PsiTypeParameter[] params = getTypeParameters();
  int i = 0;
  for (; i < params.length; ++i) {
    if (typeParameter == params[i]) {
      break;
    }
  }
  return i < params.length ? i : -1;
}
 
源代码7 项目: intellij-spring-assistant   文件: PsiCustomUtil.java
@Nullable
public static Map<PsiTypeParameter, PsiType> getTypeParameters(@NotNull PsiElement psiElement) {
  PsiType psiType = getReferredPsiType(psiElement);
  return getTypeParameters(psiType);
}
 
源代码8 项目: intellij-haxe   文件: HaxeTypeParamPsiMixinImpl.java
@Override
public PsiTypeParameter[] getTypeParameters() {
  HaxeTypeList list = (HaxeTypeList) UsefulPsiTreeUtil.getChildOfType(this, HaxeTokenTypes.TYPE_LIST);
  HaxeTypeListPart[] parts = UsefulPsiTreeUtil.getChildrenOfType(list, HaxeTypeListPart.class, null);
  return null != parts ? parts : new PsiTypeParameter[0];
}
 
public LombokLightClassBuilder withParameterType(@NotNull PsiTypeParameter psiTypeParameter) {
  getTypeParameterList().addParameter(psiTypeParameter);
  return this;
}
 
 类所在包
 同包方法