有时候我们在写逻辑的时候会遇到取某一个数组的内容,下面用几行示例说明一下这种情况如何获取希望的值:
获取域
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
public class AccessChecker { public static boolean check(Object obj, String tag) { if (obj == null || tag == null || tag.isEmpty()) { return false; } try { Class clz = obj.getClass(); Field field = clz.getDeclaredField("tags"); field.setAccessible(true); String[] tags = (String[]) field.get(obj); for (String t : tags) { if (tag.equals(t)) return true; } } catch (NoSuchFieldException e) { System.out.println("指定对象无tags属性"); e.printStackTrace(); } catch (IllegalAccessException e) { System.out.println("获取不到指定对象的tags属性"); e.printStackTrace(); } return false; } }
|
测试用例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| public class Worker { private String name; private String[] tags; public String getName() { return name; } public void setName(String name) { this.name = name; } public String[] getTags() { return tags; } public void setTags(String[] tags) { this.tags = tags; } }
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| import org.junit.Assert; import org.junit.Test; public class AccessCheckerTester { @Test public void testCheck1() { Worker worker = new Worker(); worker.setName("jeremysong"); worker.setTags(new String[]{"person", "male", "developer"}); Assert.assertTrue(AccessChecker.check(worker, "person")); } @Test public void testCheck2() { Worker worker = new Worker(); worker.setName("jeremysong"); worker.setTags(new String[]{"person", "male", "developer"}); Assert.assertFalse(AccessChecker.check(worker, "teacher")); } }
|
测试用例执行结果
欢迎关注我的公众号 须弥零一,跟我一起学习IT知识。
如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !