org.objectweb.asm.Type.getObjectType()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(9.6k)|赞(0)|评价(0)|浏览(127)

本文整理了Java中org.objectweb.asm.Type.getObjectType()方法的一些代码示例,展示了Type.getObjectType()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Type.getObjectType()方法的具体详情如下:
包路径:org.objectweb.asm.Type
类名称:Type
方法名:getObjectType

Type.getObjectType介绍

[英]Returns the Java type corresponding to the given internal name.
[中]返回与给定内部名称对应的Java类型。

代码示例

代码示例来源:origin: robolectric/robolectric

private static Type getBoxedType(final Type type) {
  switch (type.getSort()) {
   case Type.BYTE:
    return Type.getObjectType("java/lang/Byte");
   case Type.BOOLEAN:
    return Type.getObjectType("java/lang/Boolean");
   case Type.SHORT:
    return Type.getObjectType("java/lang/Short");
   case Type.CHAR:
    return Type.getObjectType("java/lang/Character");
   case Type.INT:
    return Type.getObjectType("java/lang/Integer");
   case Type.FLOAT:
    return Type.getObjectType("java/lang/Float");
   case Type.LONG:
    return Type.getObjectType("java/lang/Long");
   case Type.DOUBLE:
    return Type.getObjectType("java/lang/Double");
   default:
    // no boxing required
    return type;
  }
 }
}

代码示例来源:origin: robolectric/robolectric

Type mappedType(Type type) {
 String internalName = type.getInternalName();
 String remappedInternalName = classesToRemap.get(internalName);
 if (remappedInternalName != null) {
  return Type.getObjectType(remappedInternalName);
 } else {
  return type;
 }
}

代码示例来源:origin: jooby-project/jooby

@SuppressWarnings("rawtypes")
private Type[] args(final Object... args) {
 Type[] result = new Type[args.length];
 for (int i = 0; i < args.length; i++) {
  Object arg = args[i];
  if (arg instanceof Class) {
   arg = ((Class) arg).getName();
  }
  result[i] = Type.getObjectType(arg.toString().replace(".", "/"));
 }
 return result;
}

代码示例来源:origin: robolectric/robolectric

MutableClass(ClassNode classNode, InstrumentationConfiguration config,
  ClassNodeProvider classNodeProvider) {
 this.classNode = classNode;
 this.config = config;
 this.classNodeProvider = classNodeProvider;
 this.internalClassName = classNode.name;
 this.className = classNode.name.replace('/', '.');
 this.classType = Type.getObjectType(internalClassName);
 this.containsStubs = config.containsStubs(className);
 List<String> foundMethods = new ArrayList<>(classNode.methods.size());
 for (MethodNode methodNode : getMethods()) {
  foundMethods.add(methodNode.name + methodNode.desc);
 }
 this.foundMethods = ImmutableSet.copyOf(foundMethods);
}

代码示例来源:origin: robolectric/robolectric

/**
  * Intercepts the method using the invokedynamic bytecode instruction available in Java 7+.
  * Should be called through interceptInvokeVirtualMethod, not directly.
  */
 private void interceptInvokeVirtualMethodWithInvokeDynamic(
   ListIterator<AbstractInsnNode> instructions, MethodInsnNode targetMethod) {
  instructions.remove();  // remove the method invocation

  Type type = Type.getObjectType(targetMethod.owner);
  String description = targetMethod.desc;
  String owner = type.getClassName();

  if (targetMethod.getOpcode() != Opcodes.INVOKESTATIC) {
   String thisType = type.getDescriptor();
   description = "(" + thisType + description.substring(1);
  }

  instructions.add(new InvokeDynamicInsnNode(targetMethod.name, description, BOOTSTRAP_INTRINSIC, owner));
 }
}

代码示例来源:origin: robolectric/robolectric

private String remapParamType(Type type) {
  String remappedName;
  String internalName;

  switch (type.getSort()) {
   case ARRAY:
    internalName = type.getInternalName();
    int count = 0;
    while (internalName.charAt(count) == '[') count++;

    remappedName = remapParamType(internalName.substring(count));
    if (remappedName != null) {
     return Type.getObjectType(internalName.substring(0, count) + remappedName).getDescriptor();
    }
    break;

   case OBJECT:
    type = mappedType(type);
    break;

   default:
    break;
  }
  return type.getDescriptor();
 }
}

代码示例来源:origin: org.ow2.asm/asm

/**
 * Returns the abstract type corresponding to the given public API frame element type.
 *
 * @param symbolTable the type table to use to lookup and store type {@link Symbol}.
 * @param type a frame element type described using the same format as in {@link
 *     MethodVisitor#visitFrame}, i.e. either {@link Opcodes#TOP}, {@link Opcodes#INTEGER}, {@link
 *     Opcodes#FLOAT}, {@link Opcodes#LONG}, {@link Opcodes#DOUBLE}, {@link Opcodes#NULL}, or
 *     {@link Opcodes#UNINITIALIZED_THIS}, or the internal name of a class, or a Label designating
 *     a NEW instruction (for uninitialized types).
 * @return the abstract type corresponding to the given frame element type.
 */
static int getAbstractTypeFromApiFormat(final SymbolTable symbolTable, final Object type) {
 if (type instanceof Integer) {
  return CONSTANT_KIND | ((Integer) type).intValue();
 } else if (type instanceof String) {
  String descriptor = Type.getObjectType((String) type).getDescriptor();
  return getAbstractTypeFromDescriptor(symbolTable, descriptor, 0);
 } else {
  return UNINITIALIZED_KIND
    | symbolTable.addUninitializedType("", ((Label) type).bytecodeOffset);
 }
}

代码示例来源:origin: pxb1988/dex2jar

for (TryCatchBlockNode tcb : methodNode.tryCatchBlocks) {
  target.traps.add(new Trap(getLabel(tcb.start), getLabel(tcb.end), new LabelStmt[]{getLabel(tcb.handler)},
      new String[]{tcb.type == null ? null : Type.getObjectType(tcb.type).getDescriptor()}));
  int handlerIdx = insnList.indexOf(tcb.handler);
  handlers.set(handlerIdx);

代码示例来源:origin: spotbugs/spotbugs

v.visit("value", Type.getObjectType(nullnessAnnotationType.getClassName()));
v.visitEnd();

代码示例来源:origin: org.ow2.asm/asm

return Double.longBitsToDouble(readLong(cpInfoOffset));
case Symbol.CONSTANT_CLASS_TAG:
 return Type.getObjectType(readUTF8(cpInfoOffset, charBuffer));
case Symbol.CONSTANT_STRING_TAG:
 return readUTF8(cpInfoOffset, charBuffer);

代码示例来源:origin: micronaut-projects/micronaut-core

return Double.longBitsToDouble(readLong(index));
case CLASS:
  return Type.getObjectType(readUTF8(index, buf));
case STR:
  return readUTF8(index, buf);

代码示例来源:origin: micronaut-projects/micronaut-core

proxyConstructorGenerator.getField(proxyType, FIELD_PROXY_METHODS, FIELD_TYPE_PROXY_METHODS);
proxyConstructorGenerator.push(i);
Type methodType = Type.getObjectType(executableMethodWriter.getInternalName());
proxyConstructorGenerator.newInstance(methodType);
proxyConstructorGenerator.dup();

代码示例来源:origin: com.google.gwt/gwt-servlet

/**
 * Process the type represented by the name, possibly returning a rebased
 * name.
 */
private String processInternalName(String sourceType, String internalName) {
 if (internalName == null) {
  return null;
 }
 return processType(sourceType, Type.getObjectType(internalName)).getInternalName();
}

代码示例来源:origin: glowroot/glowroot

private @PolyNull Type hack(@PolyNull Type type) {
  if (type == null) {
    return null;
  }
  String internalName = type.getInternalName();
  if (internalName.startsWith(rootPackageName) && !internalName.endsWith(MIXIN_SUFFIX)) {
    return Type.getObjectType(internalName + "_");
  } else {
    return type;
  }
}

代码示例来源:origin: glowroot/glowroot

@VisibleForTesting
static Type getType(String type) {
  if (type.equals(Void.TYPE.getName())) {
    return Type.VOID_TYPE;
  } else if (type.equals(Boolean.TYPE.getName())) {
    return Type.BOOLEAN_TYPE;
  } else if (type.equals(Character.TYPE.getName())) {
    return Type.CHAR_TYPE;
  } else if (type.equals(Byte.TYPE.getName())) {
    return Type.BYTE_TYPE;
  } else if (type.equals(Short.TYPE.getName())) {
    return Type.SHORT_TYPE;
  } else if (type.equals(Integer.TYPE.getName())) {
    return Type.INT_TYPE;
  } else if (type.equals(Float.TYPE.getName())) {
    return Type.FLOAT_TYPE;
  } else if (type.equals(Long.TYPE.getName())) {
    return Type.LONG_TYPE;
  } else if (type.equals(Double.TYPE.getName())) {
    return Type.DOUBLE_TYPE;
  } else if (type.endsWith("[]")) {
    return getArrayType(type);
  } else {
    return Type.getObjectType(type.replace('.', '/'));
  }
}

代码示例来源:origin: glowroot/glowroot

@RequiresNonNull("owner")
  private ImmutableInstrumentationConfig.Builder startBuilder() {
    Type type = Type.getObjectType(owner);
    Type[] argumentTypes = Type.getArgumentTypes(descriptor);
    ImmutableInstrumentationConfig.Builder builder =
        ImmutableInstrumentationConfig.builder()
            .className(type.getClassName())
            .methodName(methodName);
    for (Type argumentType : argumentTypes) {
      builder.addMethodParameterTypes(argumentType.getClassName());
    }
    return builder;
  }
}

代码示例来源:origin: glowroot/glowroot

private LazyDefinedClass build(String internalName, byte[] origBytes) throws IOException {
  processed.add(internalName);
  PluginClassRemapper remapper = new PluginClassRemapper();
  ImmutableLazyDefinedClass.Builder builder = ImmutableLazyDefinedClass.builder()
      .type(Type.getObjectType(remapper.mapType(internalName)));
  ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS);
  ClassVisitor cv = new ClassRemapper(cw, remapper);
  ClassReader cr = new ClassReader(origBytes);
  cr.accept(cv, 0);
  builder.bytes(cw.toByteArray());
  for (String unprocessed : remapper.unprocessed) {
    builder.addDependencies(build(unprocessed));
  }
  return builder.build();
}

代码示例来源:origin: glowroot/glowroot

@Override
public void visit(int version, int access, String internalName, @Nullable String signature,
    @Nullable String superInternalName,
    String /*@Nullable*/ [] interfaceInternalNamesNullable) {
  type = Type.getObjectType(internalName);
  String[] interfacesIncludingMixins = getInterfacesIncludingShimsAndMixins(
      interfaceInternalNamesNullable, shimTypes, mixinTypes);
  cw.visit(version, access, internalName, signature, superInternalName,
      interfacesIncludingMixins);
}

代码示例来源:origin: apache/tika

private void writeInterfaces(String keyword, String[] interfaces)
    throws SAXException {
  if (interfaces != null && interfaces.length > 0) {
    writeKeyword(keyword);
    String separator = " ";
    for (String iface : interfaces) {
      xhtml.characters(separator);
      writeType(Type.getObjectType(iface));
      separator = ", ";
    }
    writeSpace();
  }
}

代码示例来源:origin: glowroot/glowroot

private ImmutablePointcutClass buildPointcutClass(byte[] bytes,
    boolean collocateInClassLoader, @Nullable File pluginJar) {
  ImmutablePointcutClass.Builder builder = ImmutablePointcutClass.builder()
      .type(Type.getObjectType(checkNotNull(name)));
  for (PointcutMethodVisitor methodVisitor : pointcutMethodVisitors) {
    builder.addMethods(methodVisitor.build());
  }
  return builder.pointcut(checkNotNull(pointcutAnnotationVisitor).build())
      .bytes(bytes)
      .collocateInClassLoader(collocateInClassLoader)
      .pluginJar(pluginJar)
      .build();
}

相关文章