X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=src%2Forg%2Fibex%2Fclassgen%2FMethodRef.java;h=deec8197417d53eca82ad64a721c08dc671d7d08;hb=c8ebc16b29f334a8fe3908bd2d2c678b2c184d03;hp=c866adca9f3074ad72978285784aa96f36b4556f;hpb=6c8fb599f516aa0003cb83c38d974a95385d77bf;p=org.ibex.classgen.git
diff --git a/src/org/ibex/classgen/MethodRef.java b/src/org/ibex/classgen/MethodRef.java
index c866adc..deec819 100644
--- a/src/org/ibex/classgen/MethodRef.java
+++ b/src/org/ibex/classgen/MethodRef.java
@@ -1,11 +1,23 @@
package org.ibex.classgen;
+/** This class represents Method references. It is used as an argument to the
+ INVOKESTATIC, INVOKEVIRTUAL, INVOKESPEICAL, and INVOKEINTERFACE bytecodes
+ @see CGConst#INVOKESTATIC
+ @see CGConst#INVOKEVIRTUAL
+ @see CGConst#INVOKESPECIAL
+ @see CGConst#INVOKEINTERFACE
+*/
public class MethodRef extends ClassGen.FieldOrMethodRef {
+ /** Create a reference to method name of class c with the return type ret and the
+ arguments args */
public MethodRef(Type.Object c, String name, Type ret, Type[] args) {
- super(c,name,getDescriptor(ret,args));
+ super(c, name, getDescriptor(ret, args));
}
+ /** Equivalent to MethodRef(new Type.Object(s), ...)
+ @see #MethodRef(Type.Object, String, Type, Type[])
+ */
public MethodRef(String s, String name, Type ret, Type[] args) {
- this(new Type.Object(s),name,ret,args);
+ this(Type.fromDescriptor(s).asObject(), name, ret, args);
}
MethodRef(MethodRef i) { super(i); }
@@ -18,9 +30,13 @@ public class MethodRef extends ClassGen.FieldOrMethodRef {
return sb.toString();
}
+ /** MethodRef class used for the INVOKEINTERFACE bytecode. Although this contains the same
+ data as a normal MethodRef, these are treated differently in the byte code format. In general,
+ users don't need to be concerned with this though because MethodRef's are automatically converted
+ to MethodRef.I's when they are applied to an INVOKEINTERFACE bytecode */
public static class I extends MethodRef {
- public I(Type.Object c, String name, Type ret, Type[] args) { super(c,name,ret,args); }
- public I(String s, String name, Type ret, Type[] args) { super(s,name,ret,args); }
+ public I(Type.Object c, String name, Type ret, Type[] args) { super(c, name, ret, args); }
+ public I(String s, String name, Type ret, Type[] args) { super(s, name, ret, args); }
I(MethodRef m) { super(m); }
}
}