java - 使用反射的 IllegalAccessException

标签 java reflection

我在尝试学习反射时遇到了这个 IllegalAccessException。请看下面的代码:

public class ReflectionTest
{
      public static void main(String[] args)
      {
           Set<String> myStr = new HashSet<String>();
           myStr.add("obj1");
           Iterator itr = myStr.iterator();
           Method mtd = itr.getClass().getMethod("hasNext");
           System.out.println(m.invoke(it));
      }
} 

当我尝试运行这个程序时,我得到了以下信息:

Exception in thread "main" IllegalAccessException

我不明白这是怎么回事。有任何想法吗?提前致谢。

最佳答案

麻烦的代码是这样的:

itr.getClass().getMethod

您可能希望在 Iterator 类上使用 hasNext。您编写的是 HashMap.KeyIterator 类,根据 Java 语言访问说明符(或者至少是反射使用的 JDK 1.0 的粗略解释),您的代码无法使用该类。

改用:

Iterator.class.getMethod

(如果不是出于学习目的,请远离反射(reflection)。)

关于java - 使用反射的 IllegalAccessException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5184284/

相关文章:

java - Android:使用属性时出现空指针异常

java - 在 Java 中更改字符串值

c# - 从 FullyName 字符串到 Type 对象

java - 在 Java 中使用反射

java - 简单的子串问题

java - 在 Java 中使用 CouchDb4J API 时临时 View 无法正常工作

java - 用另一个字符串替换一个字符串的内容?

reflection - 如何打开 reflect.Type?

reflection - 如何确定该类型实现了哪些协议(protocol)?

c# - GetRuntimeProperties 而不是 GetProperty