Skip to content

Commit b1586ab

Browse files
wynnteoWynn Teo
andauthored
Bael 9411 (#18748)
* BAEL-9411 * BAEL-9411 update the field accessible --------- Co-authored-by: Wynn Teo <[email protected]>
1 parent 963efed commit b1586ab

File tree

5 files changed

+80
-0
lines changed

5 files changed

+80
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.baeldung.reflection.stringvalue;
2+
3+
public class DynamicFieldDemo {
4+
public String title = "Dynamic Access";
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.baeldung.reflection.stringvalue;
2+
3+
public class PrivateFieldDemo {
4+
private String secret = "Hidden Value";
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.baeldung.reflection.stringvalue;
2+
3+
public class PublicFieldDemo {
4+
public String name = "Baeldung";
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.baeldung.reflection.stringvalue;
2+
3+
public class User {
4+
private String username = "baeldung_user";
5+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package com.baeldung.reflection.stringvalue;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import java.lang.reflect.Field;
6+
import java.util.Objects;
7+
8+
import org.junit.jupiter.api.Test;
9+
10+
public class StringValueReflectionUnitTest {
11+
12+
@Test
13+
void givenPublicStringField_whenAccessWithReflection_thenReturnValue() throws Exception {
14+
PublicFieldDemo example = new PublicFieldDemo();
15+
Field field = PublicFieldDemo.class.getField("name");
16+
String value = (String) field.get(example);
17+
assertEquals("Baeldung", value);
18+
}
19+
20+
@Test
21+
void givenPrivateStringField_whenAccessWithReflection_thenReturnValue() throws Exception {
22+
PrivateFieldDemo example = new PrivateFieldDemo();
23+
Field field = PrivateFieldDemo.class.getDeclaredField("secret");
24+
field.setAccessible(true);
25+
String value = (String) field.get(example);
26+
assertEquals("Hidden Value", value);
27+
}
28+
29+
@Test
30+
void givenFieldNameVariable_whenAccessWithReflection_thenReturnValue() throws Exception {
31+
DynamicFieldDemo example = new DynamicFieldDemo();
32+
String fieldName = "title";
33+
Field field = DynamicFieldDemo.class.getField(fieldName);
34+
String value = (String) field.get(example);
35+
assertEquals("Dynamic Access", value);
36+
}
37+
38+
public static String getFieldValueAsString(Object obj, String fieldName) throws Exception {
39+
Field field = obj.getClass().getDeclaredField(fieldName);
40+
boolean accessible = field.canAccess(obj);
41+
42+
try {
43+
if (!accessible) {
44+
field.setAccessible(true);
45+
}
46+
return Objects.toString(field.get(obj), null);
47+
} finally {
48+
if (!accessible) {
49+
field.setAccessible(false);
50+
}
51+
}
52+
}
53+
54+
@Test
55+
void givenObjectAndFieldName_whenUseUtilityMethod_thenReturnStringValue() throws Exception {
56+
User user = new User();
57+
String value = getFieldValueAsString(user, "username");
58+
assertEquals("baeldung_user", value);
59+
}
60+
}

0 commit comments

Comments
 (0)