本文整理了Java中org.objectweb.asm.Type.getSort()
方法的一些代码示例,展示了Type.getSort()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Type.getSort()
方法的具体详情如下:
包路径:org.objectweb.asm.Type
类名称:Type
方法名:getSort
[英]Returns the sort of this Java type.
[中]返回这种Java类型的排序。
代码示例来源:origin: cglib/cglib
public static boolean isPrimitive(Type type) {
switch (type.getSort()) {
case Type.ARRAY:
case Type.OBJECT:
return false;
default:
return true;
}
}
代码示例来源:origin: cglib/cglib
private static Type remap(Type type) {
switch (type.getSort()) {
case Type.OBJECT:
case Type.ARRAY:
return Constants.TYPE_OBJECT;
default:
return type;
}
}
代码示例来源:origin: cglib/cglib
private static Type remap(Type type) {
switch (type.getSort()) {
case Type.OBJECT:
case Type.ARRAY:
return Constants.TYPE_OBJECT;
default:
return type;
}
}
代码示例来源:origin: cglib/cglib
public static boolean isArray(Type type) {
return type.getSort() == Type.ARRAY;
}
代码示例来源:origin: cglib/cglib
public static boolean isPrimitive(Type type) {
switch (type.getSort()) {
case Type.ARRAY:
case Type.OBJECT:
return false;
default:
return true;
}
}
代码示例来源:origin: cglib/cglib
public static boolean isArray(Type type) {
return type.getSort() == Type.ARRAY;
}
代码示例来源:origin: cglib/cglib
public static int NEWARRAY(Type type) {
switch (type.getSort()) {
case Type.BYTE:
return Constants.T_BYTE;
case Type.CHAR:
return Constants.T_CHAR;
case Type.DOUBLE:
return Constants.T_DOUBLE;
case Type.FLOAT:
return Constants.T_FLOAT;
case Type.INT:
return Constants.T_INT;
case Type.LONG:
return Constants.T_LONG;
case Type.SHORT:
return Constants.T_SHORT;
case Type.BOOLEAN:
return Constants.T_BOOLEAN;
default:
return -1; // error
}
}
代码示例来源:origin: cglib/cglib
public static Type getBoxedType(Type type) {
switch (type.getSort()) {
case Type.CHAR:
return Constants.TYPE_CHARACTER;
case Type.BOOLEAN:
return Constants.TYPE_BOOLEAN;
case Type.DOUBLE:
return Constants.TYPE_DOUBLE;
case Type.FLOAT:
return Constants.TYPE_FLOAT;
case Type.LONG:
return Constants.TYPE_LONG;
case Type.INT:
return Constants.TYPE_INTEGER;
case Type.SHORT:
return Constants.TYPE_SHORT;
case Type.BYTE:
return Constants.TYPE_BYTE;
default:
return type;
}
}
代码示例来源:origin: scouter-project/scouter
public void visitInsn(int opcode) {
if ((opcode >= IRETURN && opcode <= RETURN)) {
Type tp = returnType;
if (tp.getSort() == Type.ARRAY && tp.getElementType().getSort() == Type.BYTE) {
mv.visitInsn(Opcodes.DUP);
mv.visitVarInsn(Opcodes.ALOAD, 1);// stat
mv.visitMethodInsn(Opcodes.INVOKESTATIC, TRACEMAIN, START_METHOD, START_SIGNATURE, false);
}
}
mv.visitInsn(opcode);
}
}
代码示例来源:origin: scouter-project/scouter
public void visitInsn(int opcode) {
if ((opcode >= IRETURN && opcode <= RETURN)) {
Type tp = returnType;
if (tp.getSort() == Type.ARRAY && tp.getElementType().getSort() == Type.BYTE) {
mv.visitInsn(Opcodes.DUP);
mv.visitVarInsn(ALOAD, 0);
mv.visitFieldInsn(GETFIELD, this.className, KEY_ELEMENT_FIELD, "Ljava/lang/Object;");
mv.visitMethodInsn(Opcodes.INVOKESTATIC, TRACEMAIN, START_METHOD, START_SIGNATURE, false);
}
}
mv.visitInsn(opcode);
}
}
代码示例来源:origin: pxb1988/dex2jar
Class<?> toJavaType(Type t) throws ClassNotFoundException {
switch (t.getSort()) {
case Type.BOOLEAN:
return boolean.class;
case Type.BYTE:
return byte.class;
case Type.SHORT:
return short.class;
case Type.CHAR:
return char.class;
case Type.INT:
return int.class;
case Type.FLOAT:
return float.class;
case Type.LONG:
return long.class;
case Type.DOUBLE:
return double.class;
case Type.OBJECT:
return Class.forName(t.getClassName());
case Type.ARRAY:
return Class.forName(t.getDescriptor());
case Type.VOID:
return void.class;
}
throw new RuntimeException();
}
}
代码示例来源:origin: pxb1988/dex2jar
static private void box(Type arg, MethodVisitor mv) {
switch (arg.getSort()) {
case Type.OBJECT:
case Type.ARRAY:
代码示例来源:origin: scouter-project/scouter
public static void main(String[] args) {
Type type = Type.getReturnType("(Z)[I");
System.out.println("type = " + type.getSort());
System.out.println("dim = " + type.getDimensions());
System.out.println("element = " + type.getElementType());
}
代码示例来源: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: pmd/pmd
private void addType(Type t) {
switch (t.getSort()) {
case Type.ARRAY:
addType(t.getElementType());
break;
case Type.OBJECT:
parseClassName(t.getClassName().replace('.', '/'));
break;
default:
// Do nothing
break;
}
}
代码示例来源:origin: robolectric/robolectric
static void box(final Type type, ListIterator<AbstractInsnNode> instructions) {
if (type.getSort() == OBJECT || type.getSort() == ARRAY) {
return;
}
if (Type.VOID_TYPE.equals(type)) {
instructions.add(new InsnNode(Opcodes.ACONST_NULL));
} else {
Type boxed = getBoxedType(type);
instructions.add(new TypeInsnNode(Opcodes.NEW, boxed.getInternalName()));
if (type.getSize() == 2) {
// Pp -> Ppo -> oPpo -> ooPpo -> ooPp -> o
instructions.add(new InsnNode(Opcodes.DUP_X2));
instructions.add(new InsnNode(Opcodes.DUP_X2));
instructions.add(new InsnNode(Opcodes.POP));
} else {
// p -> po -> opo -> oop -> o
instructions.add(new InsnNode(Opcodes.DUP_X1));
instructions.add(new InsnNode(Opcodes.SWAP));
}
instructions.add(new MethodInsnNode(Opcodes.INVOKESPECIAL, boxed.getInternalName(),
"<init>", "(" + type.getDescriptor() + ")V", false));
}
}
代码示例来源:origin: cglib/cglib
private static void hash_primitive(CodeEmitter e, Type type) {
switch (type.getSort()) {
case Type.BOOLEAN:
// f ? 0 : 1
e.push(1);
e.math(e.XOR, Type.INT_TYPE);
break;
case Type.FLOAT:
// Float.floatToIntBits(f)
e.invoke_static(Constants.TYPE_FLOAT, FLOAT_TO_INT_BITS);
break;
case Type.DOUBLE:
// Double.doubleToLongBits(f), hash_code(Long.TYPE)
e.invoke_static(Constants.TYPE_DOUBLE, DOUBLE_TO_LONG_BITS);
// fall through
case Type.LONG:
hash_long(e);
}
}
代码示例来源:origin: robolectric/robolectric
/**
* Forces a return of a default value, depending on the method's return type
*
* @param type The method's return type
*/
public void pushDefaultReturnValueToStack(Type type) {
if (type.equals(Type.BOOLEAN_TYPE)) {
push(false);
} else if (type.equals(Type.INT_TYPE) || type.equals(Type.SHORT_TYPE) || type.equals(Type.BYTE_TYPE) || type.equals(Type.CHAR_TYPE)) {
push(0);
} else if (type.equals(Type.LONG_TYPE)) {
push(0L);
} else if (type.equals(Type.FLOAT_TYPE)) {
push(0f);
} else if (type.equals(Type.DOUBLE_TYPE)) {
push(0d);
} else if (type.getSort() == ARRAY || type.getSort() == OBJECT) {
loadNull();
}
}
代码示例来源:origin: cglib/cglib
/**
* Pushes a zero onto the stack if the argument is a primitive class, or a null otherwise.
*/
public void zero_or_null(Type type) {
if (TypeUtils.isPrimitive(type)) {
switch (type.getSort()) {
case Type.DOUBLE:
push(0d);
break;
case Type.LONG:
push(0L);
break;
case Type.FLOAT:
push(0f);
break;
case Type.VOID:
aconst_null();
default:
push(0);
}
} else {
aconst_null();
}
}
代码示例来源: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;
}
}
}
内容来源于网络,如有侵权,请联系作者删除!