如何在java中获取class的特殊方法?
How get special method of class in java?
我有一个class,在Java中有一些方法如下:
public class Class1
{
private String a;
private String b;
public setA(String a_){
this.a = a_;
}
public setb(String b_){
this.b = b_;
}
public String getA(){
return a;
}
@JsonIgnore
public String getb(){
return b;
}
}
我想获取 Class1
中所有以字符串 get
开头但未使用 @JsonIgnore
注释声明的方法。
我该怎么做?
您可以使用 java 反射。
例如
import static org.reflections.ReflectionUtils.*;
Set<Method> getters = getAllMethods(someClass,
withModifier(Modifier.PUBLIC), withPrefix("get"), withParametersCount(0));
//or
Set<Method> listMethods = getAllMethods(List.class,
withParametersAssignableTo(Collection.class), withReturnType(boolean.class));
Set<Fields> fields = getAllFields(SomeClass.class, withAnnotation(annotation), withTypeAssignableTo(type));
您可以使用 Java 反射遍历所有 public 和私有方法:
Class1 obj = new Class1();
Class c = obj.getClass();
for (Method method : c.getDeclaredMethods()) {
if (method.getAnnotation(JsonIgnore.class) == null &&
method.getName().substring(0,3).equals("get")) {
System.out.println(method.getName());
}
}
通过反射我们可以做到这一点。
public static void main(String[] args) {
Method[] methodArr = Class1.class.getMethods();
for (Method method : methodArr) {
if (method.getName().contains("get") && method.getAnnotation(JsonIgnore.class)==null) {
System.out.println(method.getName());
}
}
}
我有一个class,在Java中有一些方法如下:
public class Class1
{
private String a;
private String b;
public setA(String a_){
this.a = a_;
}
public setb(String b_){
this.b = b_;
}
public String getA(){
return a;
}
@JsonIgnore
public String getb(){
return b;
}
}
我想获取 Class1
中所有以字符串 get
开头但未使用 @JsonIgnore
注释声明的方法。
我该怎么做?
您可以使用 java 反射。 例如
import static org.reflections.ReflectionUtils.*;
Set<Method> getters = getAllMethods(someClass,
withModifier(Modifier.PUBLIC), withPrefix("get"), withParametersCount(0));
//or
Set<Method> listMethods = getAllMethods(List.class,
withParametersAssignableTo(Collection.class), withReturnType(boolean.class));
Set<Fields> fields = getAllFields(SomeClass.class, withAnnotation(annotation), withTypeAssignableTo(type));
您可以使用 Java 反射遍历所有 public 和私有方法:
Class1 obj = new Class1();
Class c = obj.getClass();
for (Method method : c.getDeclaredMethods()) {
if (method.getAnnotation(JsonIgnore.class) == null &&
method.getName().substring(0,3).equals("get")) {
System.out.println(method.getName());
}
}
通过反射我们可以做到这一点。
public static void main(String[] args) {
Method[] methodArr = Class1.class.getMethods();
for (Method method : methodArr) {
if (method.getName().contains("get") && method.getAnnotation(JsonIgnore.class)==null) {
System.out.println(method.getName());
}
}
}