当前位置: 首页>>代码示例>>Java>>正文


Java MethodType.getParameterTypes方法代码示例

本文整理汇总了Java中com.sun.tools.javac.code.Type.MethodType.getParameterTypes方法的典型用法代码示例。如果您正苦于以下问题:Java MethodType.getParameterTypes方法的具体用法?Java MethodType.getParameterTypes怎么用?Java MethodType.getParameterTypes使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在com.sun.tools.javac.code.Type.MethodType的用法示例。


在下文中一共展示了MethodType.getParameterTypes方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: addDeserializationCase

import com.sun.tools.javac.code.Type.MethodType; //导入方法依赖的package包/类
private void addDeserializationCase(int implMethodKind, Symbol refSym, Type targetType, MethodSymbol samSym,
        DiagnosticPosition pos, List<Object> staticArgs, MethodType indyType) {
    String functionalInterfaceClass = classSig(targetType);
    String functionalInterfaceMethodName = samSym.getSimpleName().toString();
    String functionalInterfaceMethodSignature = typeSig(types.erasure(samSym.type));
    String implClass = classSig(types.erasure(refSym.owner.type));
    String implMethodName = refSym.getQualifiedName().toString();
    String implMethodSignature = typeSig(types.erasure(refSym.type));

    JCExpression kindTest = eqTest(syms.intType, deserGetter("getImplMethodKind", syms.intType), make.Literal(implMethodKind));
    ListBuffer<JCExpression> serArgs = new ListBuffer<>();
    int i = 0;
    for (Type t : indyType.getParameterTypes()) {
        List<JCExpression> indexAsArg = new ListBuffer<JCExpression>().append(make.Literal(i)).toList();
        List<Type> argTypes = new ListBuffer<Type>().append(syms.intType).toList();
        serArgs.add(make.TypeCast(types.erasure(t), deserGetter("getCapturedArg", syms.objectType, argTypes, indexAsArg)));
        ++i;
    }
    JCStatement stmt = make.If(
            deserTest(deserTest(deserTest(deserTest(deserTest(
                kindTest,
                "getFunctionalInterfaceClass", functionalInterfaceClass),
                "getFunctionalInterfaceMethodName", functionalInterfaceMethodName),
                "getFunctionalInterfaceMethodSignature", functionalInterfaceMethodSignature),
                "getImplClass", implClass),
                "getImplMethodSignature", implMethodSignature),
            make.Return(makeIndyCall(
                pos,
                syms.lambdaMetafactory,
                names.altMetafactory,
                staticArgs, indyType, serArgs.toList(), samSym.name)),
            null);
    ListBuffer<JCStatement> stmts = kInfo.deserializeCases.get(implMethodName);
    if (stmts == null) {
        stmts = new ListBuffer<>();
        kInfo.deserializeCases.put(implMethodName, stmts);
    }
    /****
    System.err.printf("+++++++++++++++++\n");
    System.err.printf("*functionalInterfaceClass: '%s'\n", functionalInterfaceClass);
    System.err.printf("*functionalInterfaceMethodName: '%s'\n", functionalInterfaceMethodName);
    System.err.printf("*functionalInterfaceMethodSignature: '%s'\n", functionalInterfaceMethodSignature);
    System.err.printf("*implMethodKind: %d\n", implMethodKind);
    System.err.printf("*implClass: '%s'\n", implClass);
    System.err.printf("*implMethodName: '%s'\n", implMethodName);
    System.err.printf("*implMethodSignature: '%s'\n", implMethodSignature);
    ****/
    stmts.append(stmt);
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:50,代码来源:LambdaToMethod.java


注:本文中的com.sun.tools.javac.code.Type.MethodType.getParameterTypes方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。