java - 代码不抛出异常

标签 java illegalaccessexception

我正在尝试执行下面编写的代码,该代码应该抛出异常,但它没有这样做

try {
    Field.class.getMethod("getInt", Object.class).setAccessible(false);
    StringSearch.class.getMethod("searchChars",cc.getClass(),pattern3.getClass()).setAccessible(false);
    ss4.getClass().getMethod("searchChars",cc.getClass(),pattern3.getClass()).setAccessible(false);
    ss4.searchChars(cc,pattern3);
    ss4.searchString(str,pattern);
}
catch(NoSuchMethodException ex){
    ex.printStackTrace();
}

它实际上应该抛出 IllegalAccessException。

ss4 是 BNDMWildcardsCI 类的对象(字符串搜索的算法之一) cc、pattern3 是字符数组 str、pattern 都是字符串

为什么它不抛出异常,它不抛出 NoSuchMethodFound 异常意味着它能够找到该方法,我也尝试打印 isAccessible 并且它说 false 但是当我运行测试时它不会抛出任何异常

最佳答案

据我所知,如果一个方法被声明为公共(public)(或以其他方式可访问),setAccessible(false) 无法将其设为私有(private)。仅当您有私有(private)方法并且之前调用过 setAccessible(true) 时,它才有用。

关于java - 代码不抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13811359/

相关文章:

java - Jackson 自定义字符串到日期序列化器

java - 为什么使用反射时没有非法访问异常

java - 如何解决 java.net.MalformedURLException : Protocol not found: 9 in android

java - 使用递归来测试两个字符串是否相同但方向相反

java - 方法 copyOfRange Kotlin 的 IllegalAccessError

java - 无法从类访问父类(super class)

Java - 通过反射访问公共(public)成员

java - 删除数组数据的代码不起作用

java - 使用 Jenkins 和 maven 发布 WAR 文件到 Artifactory