Skip to content

Commit e03fe09

Browse files
committed
svm: add JVMCIReflectionUtil#getConstructors
1 parent 7c8bd29 commit e03fe09

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

substratevm/src/com.oracle.svm.util/src/com/oracle/svm/util/JVMCIReflectionUtil.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import jdk.graal.compiler.debug.GraalError;
3333
import jdk.vm.ci.meta.JavaType;
3434
import jdk.vm.ci.meta.MetaAccessProvider;
35+
import jdk.vm.ci.meta.ModifiersProvider;
3536
import jdk.vm.ci.meta.ResolvedJavaField;
3637
import jdk.vm.ci.meta.ResolvedJavaMethod;
3738
import jdk.vm.ci.meta.ResolvedJavaType;
@@ -134,6 +135,15 @@ public static ResolvedJavaMethod getDeclaredConstructor(MetaAccessProvider metaA
134135
return getDeclaredConstructor(false, metaAccess, declaringClass, parameterTypes);
135136
}
136137

138+
/**
139+
* Gets the constructors declared by {@code declaringClass}. Like
140+
* {@link Class#getConstructors()}, this only returns public constructors and does not consider
141+
* super classes.
142+
*/
143+
public static ResolvedJavaMethod[] getConstructors(ResolvedJavaType declaringClass) {
144+
return Arrays.stream(declaringClass.getDeclaredConstructors(false)).filter(ModifiersProvider::isPublic).toArray(ResolvedJavaMethod[]::new);
145+
}
146+
137147
private static ResolvedJavaMethod findMethod(ResolvedJavaType declaringClass, ResolvedJavaMethod[] methods, String name, ResolvedJavaType... parameterTypes) {
138148
ResolvedJavaMethod res = null;
139149
for (ResolvedJavaMethod m : methods) {

0 commit comments

Comments
 (0)