本文整理汇总了Java中com.strobel.assembler.metadata.MethodDefinition.isStatic方法的典型用法代码示例。如果您正苦于以下问题:Java MethodDefinition.isStatic方法的具体用法?Java MethodDefinition.isStatic怎么用?Java MethodDefinition.isStatic使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.strobel.assembler.metadata.MethodDefinition
的用法示例。
在下文中一共展示了MethodDefinition.isStatic方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: selfCall
import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
private boolean selfCall(Expression expr, MethodDefinition md) {
if (!(expr.getOperand() instanceof MethodReference))
return false;
MethodReference mr = (MethodReference) expr.getOperand();
if (!mr.isEquivalentTo(md))
return false;
switch (expr.getCode()) {
case InvokeStatic:
return md.isStatic();
case InitObject:
case InvokeSpecial:
return md.isConstructor();
case InvokeVirtual:
case InvokeInterface:
return !md.isStatic() && Exprs.isThis(expr.getArguments().get(0));
default:
return false;
}
}
示例2: visitMethod
import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
@MethodVisitor
public void visitMethod(MethodDefinition md, MethodContext mc, TypeDefinition td) {
if(isSerializable) {
switch(md.getName()) {
case "readResolve":
if(md.getSignature().startsWith("()")) {
if(!md.getSignature().equals("()Ljava/lang/Object;")) {
mc.report("ReadResolveMustReturnObject", 0);
} else if(md.isStatic()) {
mc.report("ReadResolveIsStatic", 0);
}
}
break;
case "readObject":
if(md.getSignature().equals("(Ljava/io/ObjectInputStream;)V")) {
if(!md.isPrivate())
mc.report("SerializationMethodMustBePrivate", 0);
if(Flags.testAny(md.getFlags(), Flags.SYNCHRONIZED))
mc.report("ReadObjectIsSynchronized", 0);
}
break;
case "readObjectNoData":
if(md.getSignature().equals("()V") && !md.isPrivate())
mc.report("SerializationMethodMustBePrivate", 0);
break;
case "writeObject":
if(md.getSignature().equals("(Ljava/io/ObjectOutputStream;)V")) {
if(!md.isPrivate())
mc.report("SerializationMethodMustBePrivate", 0);
if(Flags.testAny(md.getFlags(), Flags.SYNCHRONIZED) &&
td.getDeclaredMethods().stream().noneMatch(m -> m != md &&
Flags.testAny(m.getFlags(), Flags.SYNCHRONIZED)))
mc.report("WriteObjectIsSynchronized", 0);
}
break;
}
}
}
示例3: visitMethod
import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
@MethodVisitor
public void visitMethod(MethodDefinition md, TypeDefinition td, MethodContext mc) {
if (badMethodName(md.getName())) {
if (Types.isInstance(td, "org/eclipse/osgi/util/NLS"))
return;
// javacc generated methods
if (td.getName().equals("SimpleCharStream")
&& (md.getName().equals("ReInit") || md.getName().equals("BeginToken") || md.getName().equals("Done")
|| md.getName().equals("GetSuffix") || md.getName().equals("GetImage")))
return;
if (td.getName().endsWith("TokenManager") && md.getName().equals("ReInit"))
return;
int priority = 0;
if (!td.isPublic())
priority += 20;
else {
if (td.isFinal())
priority += 3;
if (md.isProtected())
priority += 3;
else if (md.isPackagePrivate())
priority += 6;
else if (md.isPrivate())
priority += 10;
}
mc.report("BadNameOfMethod", priority);
}
String javaVersion = getFutureKeywordVersion(md.getName());
if (javaVersion != null) {
mc.report("BadNameOfMethodFutureKeyword", AccessLevel.of(md).select(0, 10, 20, 30), JAVA_VERSION.create(javaVersion));
}
if (!md.isStatic() && md.isPublic()) {
MemberInfo mi = getMistakeFix(md);
if (mi != null) {
mc.report("BadNameOfMethodMistake", md.isDeprecated() ? 20 : 0, Roles.REPLACEMENT_METHOD.create(mi));
}
}
}
示例4: visit
import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
@AstVisitor(nodes = AstNodes.EXPRESSIONS)
public void visit(Expression store, NodeChain nc, MethodContext mc, MethodDefinition md, TypeDefinition td) {
if (store.getCode() != AstCode.Store)
return;
Variable var = (Variable) store.getOperand();
Expression stringExpr = store.getArguments().get(0);
if (!isStringBuilderToString(stringExpr))
return;
Expression appendSource = getAppendSource(stringExpr);
if (appendSource == null)
return;
if (appendSource.getCode() != AstCode.Load)
return;
Variable loadVar = (Variable) appendSource.getOperand();
if (loadVar != var)
return;
// String concatenation like a += x+y+z found
if (!ValuesFlow.hasPhiSource(appendSource))
return;
List<Expression> phiArgs = new ArrayList<>(ValuesFlow.getSource(appendSource).getArguments());
phiArgs.remove(stringExpr);
NodeChain parent = nc;
int priority = 0;
while (parent != null) {
Node node = parent.getNode();
if (node instanceof Condition || node instanceof Switch)
priority += 5;
if (node instanceof Loop && !phiArgs.stream().allMatch(src -> Nodes.find(node, src::equals) != null)) {
// Autogenerated by javacc
if (md.getName().equals("initialise") && md.isStatic() && md.isPrivate() &&
Types.isString(md.getReturnType())
&& td.getSimpleName().equals("ParseException"))
return;
mc.report("StringConcatInLoop", priority, store);
return;
}
parent = parent.getParent();
}
}
示例5: isOverridden
import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
public boolean isOverridden(MethodDefinition md) {
if(md.isStatic() || md.isFinal() || md.getDeclaringType().isFinal())
return false;
IMetadataResolver resolver = md.getDeclaringType().getResolver();
MemberInfo mi = new MemberInfo(md);
TypeHierarchy th = get(md.getDeclaringType());
return th != null && th.isOverridden(resolver, mi);
}
示例6: visitType
import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
@Override
protected void visitType(TypeDefinition td) {
for (MethodDefinition md : td.getDeclaredMethods()) {
MethodData mdata = getMethodData(md);
if (md.isFinal() || td.isFinal() || md.isStatic() || md.isPrivate()) {
mdata.flags |= METHOD_FINAL;
}
visitMethod(mdata, md);
for (MethodDefinition superMethod : Methods.findSuperMethods(md)) {
getMethodData(superMethod).addSubMethod(mdata);
}
}
}
示例7: checkMethod
import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
@MethodVisitor
public boolean checkMethod(MethodDefinition md, TypeDefinition td) {
return td.isPublic() && !td.isFinal() && !md.isStatic();
}
示例8: check
import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
@MethodVisitor
public boolean check(MethodDefinition md) {
return !md.isStatic();
}
示例9: checkMethod
import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
@MethodVisitor
public boolean checkMethod(MethodDefinition md, TypeDefinition td) {
return !td.isFinal() && !md.isStatic();
}
示例10: isMain
import com.strobel.assembler.metadata.MethodDefinition; //导入方法依赖的package包/类
public static boolean isMain(MethodDefinition md) {
return md.getName().equals("main") && md.isPublic() && md.isStatic() && md.getErasedSignature().startsWith("([Ljava/lang/String;)");
}