BAEL-870 How to Call a Method During Runtime Using Reflection (#1806)
This commit is contained in:
parent
46d9022879
commit
dcc4045371
|
@ -2,19 +2,19 @@ package com.baeldung.java.reflection;
|
|||
|
||||
public class Operations {
|
||||
|
||||
public double sum(int a, double b) {
|
||||
public double publicSum(int a, double b) {
|
||||
return a + b;
|
||||
}
|
||||
|
||||
public static double multiply(float a, long b) {
|
||||
public static double publicStaticMultiply(float a, long b) {
|
||||
return a * b;
|
||||
}
|
||||
|
||||
private boolean and(boolean a, boolean b) {
|
||||
private boolean privateAnd(boolean a, boolean b) {
|
||||
return a && b;
|
||||
}
|
||||
|
||||
protected int max(int a, int b) {
|
||||
protected int protectedMax(int a, int b) {
|
||||
return a > b ? a : b;
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ public class OperationsUnitTest {
|
|||
|
||||
@Test(expected = IllegalAccessException.class)
|
||||
public void givenObject_whenInvokePrivateMethod_thenFail() throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
|
||||
Method andPrivateMethod = Operations.class.getDeclaredMethod("and", boolean.class, boolean.class);
|
||||
Method andPrivateMethod = Operations.class.getDeclaredMethod("privateAnd", boolean.class, boolean.class);
|
||||
|
||||
Operations operationsInstance = new Operations();
|
||||
Boolean result = (Boolean) andPrivateMethod.invoke(operationsInstance, true, false);
|
||||
|
@ -26,7 +26,7 @@ public class OperationsUnitTest {
|
|||
|
||||
@Test
|
||||
public void givenObject_whenInvokePrivateMethod_thenCorrect() throws Exception {
|
||||
Method andPrivatedMethod = Operations.class.getDeclaredMethod("and", boolean.class, boolean.class);
|
||||
Method andPrivatedMethod = Operations.class.getDeclaredMethod("privateAnd", boolean.class, boolean.class);
|
||||
andPrivatedMethod.setAccessible(true);
|
||||
|
||||
Operations operationsInstance = new Operations();
|
||||
|
@ -37,7 +37,7 @@ public class OperationsUnitTest {
|
|||
|
||||
@Test
|
||||
public void givenObject_whenInvokePublicMethod_thenCorrect() throws Exception {
|
||||
Method sumInstanceMethod = Operations.class.getMethod("sum", int.class, double.class);
|
||||
Method sumInstanceMethod = Operations.class.getMethod("publicSum", int.class, double.class);
|
||||
|
||||
Operations operationsInstance = new Operations();
|
||||
Double result = (Double) sumInstanceMethod.invoke(operationsInstance, 1, 3);
|
||||
|
@ -47,7 +47,7 @@ public class OperationsUnitTest {
|
|||
|
||||
@Test
|
||||
public void givenObject_whenInvokeStaticMethod_thenCorrect() throws Exception {
|
||||
Method multiplyStaticMethod = Operations.class.getDeclaredMethod("multiply", float.class, long.class);
|
||||
Method multiplyStaticMethod = Operations.class.getDeclaredMethod("publicStaticMultiply", float.class, long.class);
|
||||
|
||||
Double result = (Double) multiplyStaticMethod.invoke(null, 3.5f, 2);
|
||||
|
||||
|
|
|
@ -16,17 +16,17 @@ public class MoreOperationsUnitTest {
|
|||
|
||||
@Test(expected = IllegalAccessException.class)
|
||||
public void givenObject_whenInvokeProtectedMethod_thenFail() throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
|
||||
Method maxProtectedMethod = Operations.class.getDeclaredMethod("max", int.class, int.class);
|
||||
Method maxProtectedMethod = Operations.class.getDeclaredMethod("protectedMax", int.class, int.class);
|
||||
|
||||
Operations operationsInstance = new Operations();
|
||||
Integer result = (Integer) maxProtectedMethod.invoke(operationsInstance, 2, 4);
|
||||
System.out.println("result = " + result);
|
||||
|
||||
assertThat(result, equalTo(4));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void givenObject_whenInvokeProtectedMethod_thenCorrect() throws Exception {
|
||||
Method maxProtectedMethod = Operations.class.getDeclaredMethod("max", int.class, int.class);
|
||||
Method maxProtectedMethod = Operations.class.getDeclaredMethod("protectedMax", int.class, int.class);
|
||||
maxProtectedMethod.setAccessible(true);
|
||||
|
||||
Operations operationsInstance = new Operations();
|
||||
|
|
Loading…
Reference in New Issue