heaven 中开始 0.5.0 支持。
chat
java 如何实现一个条件匹配方法,有两个入参,context 和 path。context 比如是一个 a 对象,有一个 b 属性,path=a 就获取 a 对象本身,a.b 就获取 a 对象的 b 属性?
在Java中实现一个条件匹配方法,根据传入的path字符串从context对象中获取对应的值,可以使用反射来实现。
以下是一个简单的实例代码:
import java.lang.reflect.Field;
public class PathMatcher {
public static Object match(Object context, String path) throws NoSuchFieldException, IllegalAccessException {
if (context == null || path == null || path.isEmpty()) {
return null;
}
String[] pathSegments = path.split("\\.");
Object currentObject = context;
for (String segment : pathSegments) {
if (currentObject == null) {
return null; // Stop if any intermediate object is null
}
Class currentClass = currentObject.getClass();
Field field = currentClass.getDeclaredField(segment);
field.setAccessible(true);
currentObject = field.get(currentObject);
}
return currentObject;
}
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
// 示例对象
A a = new A();
a.b = new B();
a.b.value = "Hello, World!";
// 测试
Object result1 = match(a, "b.value");
Object result2 = match(a, "b.nonExistentField");
System.out.println("Result 1: " + result1); // Output: Result 1: Hello, World!
System.out.println("Result 2: " + result2); // Output: Result 2: null
}
static class A {
B b;
}
static class B {
String value;
}
}