Close

Java Reflection - Field.isSynthetic() Examples

Java Reflection Java Java API 


Class:

java.lang.reflect.Field

java.lang.Objectjava.lang.Objectjava.lang.reflect.AccessibleObjectjava.lang.reflect.AccessibleObjectjava.lang.reflect.AnnotatedElementAnnotatedElementjava.lang.reflect.Fieldjava.lang.reflect.Fieldjava.lang.reflect.MemberMemberLogicBig

Method:

public boolean isSynthetic()

Returns true if this field is a synthetic field.


Examples


In enum class $VALUES field is synthetically created by the compiler (check out this example as well):

package com.logicbig.example.field;

import java.lang.reflect.Field;
import java.time.DayOfWeek;

public class IsSyntheticExample {

public static void main(String... args) {
for (Field field : DayOfWeek.class.getDeclaredFields()) {
if (field.isSynthetic()) {
System.out.println("Synthetic Field: " + field.getName());
System.out.println("Synthetic Field type: "+field.getType().getTypeName());
}
}
}
}

Output

Synthetic Field: $VALUES
Synthetic Field type: java.time.DayOfWeek[]




All inner classes have a synthetic instance field variable pointing to the outer class (check out this tutorial):

package com.logicbig.example.field;

import java.lang.reflect.Field;

public class IsSyntheticExample2 {

public static void main(String... args) {
for (Field field : MyInnerClass.class.getDeclaredFields()) {
if (field.isSynthetic()) {
System.out.println("Synthetic Field: " + field.getName());
System.out.println("Synthetic Field type: " + field.getType().getTypeName());
}
}
}

private class MyInnerClass {}
}

Output

Synthetic Field: this$0
Synthetic Field type: com.logicbig.example.field.IsSyntheticExample2




See Also