Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于课堂教学的思考_Java_Reflection - Fatal编程技术网

Java 关于课堂教学的思考

Java 关于课堂教学的思考,java,reflection,Java,Reflection,阅读关于课堂加载的内容时,遇到- “……每当我们编译任何Java文件时,编译器将在发出的字节码中嵌入一个名为class的公共、静态、最终字段,类型为Java.lang.class。由于该字段是公共字段,我们可以使用点符号访问它,如下所示: java.lang.Class klass=Myclass.Class; …………” 我尝试使用反射访问这个字段(Myclass.class),这显然是疯狂的,我同意,但仍然:),我得到了java.lang.NoSuchFieldException:class

阅读关于课堂加载的内容时,遇到- “……每当我们编译任何Java文件时,编译器将在发出的字节码中嵌入一个名为class的公共、静态、最终字段,类型为Java.lang.class。由于该字段是公共字段,我们可以使用点符号访问它,如下所示:

java.lang.Class klass=Myclass.Class; …………”

我尝试使用反射访问这个字段(Myclass.class),这显然是疯狂的,我同意,但仍然:),我得到了java.lang.NoSuchFieldException:class

Myclass myObject = new Myclass; 
System.out.println(myObject.getclass().getField("class"));

然后是运行时而不是编译器添加static.class字段吗?即使如此,为什么不能使用反射来访问它呢?

这本身并不是字段访问,而是Java语言语法的一部分,它看起来只是字段访问。我认为编译器可以将这样一个合成字段放入类文件中,尽管我不知道有哪一个是这样的。

这本身不是字段访问,而是Java语言语法的一种,看起来只是字段访问。我认为编译器可以将这样一个合成字段放入类文件中,尽管我不知道有哪一个是这样的。

一般来说,Java语言规范说这种形式的表达式必须返回相应的类对象,但它没有定义必须如何做。EclipseJDT编译器实际上并没有将其设置为字段。它创建了一个名为“$class”的方法,每当您访问myClass.class之类的内容时都会调用该方法

一般来说,Java语言规范规定这种形式的表达式必须返回相应的类对象,但它没有定义如何执行。EclipseJDT编译器实际上并没有将其设置为字段。它创建了一个名为“$class”的方法,每当您访问myClass.class之类的内容时都会调用该方法

字段名为klass,正在访问类@bunta为Clarity编辑了这个问题,只是想知道为什么您需要反射中的.class,而您已经有了getClass()不,我不需要它。我只是想尝试:)但不管怎样,事实证明。类是一个表达式,而不一定像onjava文章所宣称的那样是一个字段。字段名是klass,访问类@bunta为Clarity编辑了这个问题,只是想知道为什么您需要反射中的.class,而您已经有了getClass()不,我不需要它。我只是想试试:)但不管怎样,事实证明。类是一个表达式,不一定像onjava文章所宣称的那样是一个字段。hmmm。。。这样会更有意义。。thnx。需要阅读说明书,没有其他选择:)嗯。。。这样会更有意义。。thnx。需要阅读规格,没有其他选择:)