Skip to content

Commit b8dbdd1

Browse files
author
Harold Seigel
committed
8235359: Simplify method Class.getRecordComponents()
Change getRecordComponents0() to return an array of RecordComponent's so no conversion is needed Reviewed-by: lfoltan, chegar, fparain, vromero, mchung
1 parent 7eadf5b commit b8dbdd1

2 files changed

Lines changed: 8 additions & 10 deletions

File tree

src/java.base/share/classes/java/lang/Class.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2315,15 +2315,11 @@ public RecordComponent[] getRecordComponents() {
23152315
if (isPrimitive() || isArray()) {
23162316
return new RecordComponent[0];
23172317
}
2318-
Object[] recordComponents = getRecordComponents0();
2319-
if (recordComponents == null || recordComponents.length == 0) {
2318+
RecordComponent[] recordComponents = getRecordComponents0();
2319+
if (recordComponents == null) {
23202320
return new RecordComponent[0];
23212321
}
2322-
RecordComponent[] result = new RecordComponent[recordComponents.length];
2323-
for (int i = 0; i < recordComponents.length; i++) {
2324-
result[i] = (RecordComponent)recordComponents[i];
2325-
}
2326-
return result;
2322+
return recordComponents;
23272323
}
23282324

23292325
/**
@@ -3483,7 +3479,8 @@ private static <U> Constructor<U>[] copyConstructors(Constructor<U>[] arg) {
34833479
private native Method[] getDeclaredMethods0(boolean publicOnly);
34843480
private native Constructor<T>[] getDeclaredConstructors0(boolean publicOnly);
34853481
private native Class<?>[] getDeclaredClasses0();
3486-
private native Object[] getRecordComponents0();
3482+
@SuppressWarnings("preview")
3483+
private native RecordComponent[] getRecordComponents0();
34873484
private native boolean isRecord0();
34883485

34893486
/**

src/java.base/share/native/libjava/Class.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ extern jboolean VerifyFixClassname(char *utf_name);
5151
#define CTR "Ljava/lang/reflect/Constructor;"
5252
#define PD "Ljava/security/ProtectionDomain;"
5353
#define BA "[B"
54+
#define RC "Ljava/lang/reflect/RecordComponent;"
5455

5556
static JNINativeMethod methods[] = {
5657
{"initClassName", "()" STR, (void *)&JVM_InitClassName},
@@ -77,8 +78,8 @@ static JNINativeMethod methods[] = {
7778
{"getRawTypeAnnotations", "()" BA, (void *)&JVM_GetClassTypeAnnotations},
7879
{"getNestHost0", "()" CLS, (void *)&JVM_GetNestHost},
7980
{"getNestMembers0", "()[" CLS, (void *)&JVM_GetNestMembers},
80-
{"getRecordComponents0", "()[" OBJ, (void *)&JVM_GetRecordComponents},
81-
{"isRecord0", "()Z", (void *)&JVM_IsRecord},
81+
{"getRecordComponents0", "()[" RC, (void *)&JVM_GetRecordComponents},
82+
{"isRecord0", "()Z", (void *)&JVM_IsRecord},
8283
};
8384

8485
#undef OBJ

0 commit comments

Comments
 (0)