Javaã¯ã©ã¹è§£ææ©ãä½ã 7æ¥ç®
EnclosingMethodå±æ§ã¨Deprecatedå±æ§ã«å¯¾å¿ãã·ã°ããã£å±æ§ã対å¿ãããã©ã解æé¨åãæªã
ç¾å¨ã®èªã¿è¾¼ã¿å¯¾å¿ãã¼ã¿
â ä»ããä»æ¥å¯¾å¿ããã¢ãã
ã¯ã©ã¹ãã¼ã¿
å称 | ãµã¤ãº | 説æ |
---|---|---|
magic | 4byte | ã¯ã©ã¹ãã¡ã¤ã«ãèå¥ããããã®ãã¸ãã¯ãã³ãã¼ã0xCAFEBABEãå ¥ãã |
minor_version | 2byte | ã¯ã©ã¹ã®ãã¤ãã¼ãã¼ã¸ã§ã³ |
major_version | 2byte | ã¯ã©ã¹ã®ã¡ã¸ã£ã¼ãã¼ã¸ã§ã³ |
constant_pool_count | 2byte | constant_pool (ã¯ã©ã¹åã¡ã½ããåãªã©ã®å®æ°ãæ ¼ç´ããããã¼ãã«)ã®æ° |
constant_pool | å¯å¤ | ã¯ã©ã¹åã¡ã½ããåãªã©ã®å®æ°ãæ ¼ç´ããããã¼ãã«ãconstant_pool_count-(1+Double or Longã®constantã®æ°)åã®constant_poolã並ã¶ããæååãããClassæ å ±ããªã©ç¨®é¡ãããã¤ããã£ã¦ããããããã¼ã¿å½¢å¼/ãµã¤ãºãç°ãªãã |
access_flags | 2byte | ã¯ã©ã¹/ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ã¢ã¯ã»ã¹æ¨©éæ å ± |
this_class | 2byte | ãã®ã¯ã©ã¹ãã¡ã¤ã«ã§å®ç¾©ããã¦ããã¯ã©ã¹ã示ãconstant_poolã®idã |
super_class | 2byte | ãã®ã¯ã©ã¹ãã¡ã¤ã«ã§å®ç¾©ããã¦ããã¯ã©ã¹ã®è¦ªã¯ã©ã¹ã示ãconstant_poolã®idã |
interfaces_count | 2byte | å®è£ ãã¦ããã¤ã³ã¿ã¼ãã§ã¤ã¹ã®æ°ã |
interfaces | å¯å¤(2byte*interfaces_count) | å®è£ ãã¦ããã¤ã³ã¿ã¼ãã§ã¤ã¹ã示ãconstant_poolã®idãinterfaces_countæ°ã ãç¶ãã |
fields_count | 2byte | ã¯ã©ã¹/ã¤ã³ã¿ã¼ãã§ã¤ã¹ã§å®ç¾©ããã¦ãããã£ã¼ã«ãã®æ°ã |
field_info | å¯å¤ | ã¯ã©ã¹/ã¤ã³ã¿ã¼ãã§ã¤ã¹ã§å®ç¾©ããã¦ãããã£ã¼ã«ãããã¼ã¿å½¢å¼ã¯ããã£ã¼ã«ããã¼ã¿ããåç §ãfields_countæ°ã ãç¶ãã |
methods_count | 2byte | ã¯ã©ã¹/ã¤ã³ã¿ã¼ãã§ã¤ã¹ã§å®ç¾©ããã¦ããã¡ã½ããã®æ°ã |
method_info | å¯å¤ | ã¯ã©ã¹/ã¤ã³ã¿ã¼ãã§ã¤ã¹ã§å®ç¾©ããã¦ããã¡ã½ããããã¼ã¿å½¢å¼ã¯ãã¡ã½ãããã¼ã¿ããåç §ãmethods_countæ°ã ãç¶ãã |
attributes_count | 2byte | ã¯ã©ã¹/ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®å±æ§ã®æ°ã |
attribute_info | å¯å¤ | ã¯ã©ã¹/ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®å±æ§ãã³ã³ãã¤ã«å ã®ã½ã¼ã¹ãã¡ã¤ã«ã®æ å ±ãªã©ãå«ã¾ããããã¼ã¿å½¢å¼ã¯å種ãå±æ§ããåç §ãmethods_countæ°ã ãç¶ãã |
ãã£ã¼ã«ããã¼ã¿
å称 | ãµã¤ãº | 説æ |
---|---|---|
access_flags | 2byte | ãã£ã¼ã«ãã®ã¢ã¯ã»ã¹æ¨©éæ å ± |
name_index | 2byte | ãã£ã¼ã«ãåã示ãconstant_poolã®id |
descriptor_index | 2byte | ãã£ã¼ã«ãã®åã®æåå表ç¾ã示ãconstant_poolã®id |
attributes_count | 2byte | ãã£ã¼ã«ãã«ä»å ãããå±æ§ã®æ° |
attribute_info | å¯å¤ | ãã£ã¼ã«ãã®å±æ§ãå®æ°ã®å¤ãdeplicatedã®æ å ±ãªãããå±æ§ã¨ãã¦æå®ããããattributes_countæ°ã ãç¶ã |
ã¡ã½ãããã¼ã¿
å称 | ãµã¤ãº | 説æ |
---|---|---|
access_flags | 2byte | ã¡ã½ããã®ã¢ã¯ã»ã¹æ¨©éæ å ± |
name_index | 2byte | ã¡ã½ããåã示ãconstant_poolã®id |
descriptor_index | 2byte | ã¡ã½ããã®å¼æ°ã¨æ»ãå¤ã®åã®æåå表ç¾ã示ãconstant_poolã®idãã(<å¼ãæ°ã®å><å¼ãæ°ã®å>..)<æ»ãå¤ã®å>ãå½¢å¼ã |
attributes_count | 2byte | ã¡ã½ããã«ä»å ãããå±æ§ã®æ° |
attribute_info | å¯å¤ | ã¡ã½ããã®å±æ§ãã¡ã½ããã®å¦çã³ã¼ããçºçããä¾å¤ãªã©ãå±æ§ã¨ãã¦æå®ããããattributes_countæ°ã ãç¶ã |
ConstantValueå±æ§
æååã¨ããªããã£ãåã®å®æ°ã®å¤ã示ããã£ã¼ã«ãã®å±æ§ã
å称 | ãµã¤ãº | 説æ |
---|---|---|
attribute_name_index | 2byte | å±æ§å"ConstantValue"ã示ãconstant_poolã®idã |
attribute_length | 4byte | å±æ§å¤ã®é·ãã2ã§åºå® |
constantvalue_index | 2byte | å®æ°å¤ã示ãconstant_poolã®idã |
SourceFileå±æ§
ã¯ã©ã¹ã®ã³ã³ãã¤ã«åã®ã½ã¼ã¹ãã¡ã¤ã«å(ãã¹ã§ã¯ãªãã)ã®æ å ±ãä¿æããã¯ã©ã¹å±æ§ã
å称 | ãµã¤ãº | 説æ |
---|---|---|
attribute_name_index | 2byte | å±æ§å"SourceFile"ã示ãconstant_poolã®idã |
attribute_length | 4byte | å±æ§å¤ã®é·ãã2ã§åºå® |
sourcefile_index | 2byte | ã½ã¼ã¹ãã¡ã¤ã«åã示ãconstant_poolã®idã |
Exceptionså±æ§
çºçãããä¾å¤ã示ãã¡ã½ããã®å±æ§ã
å称 | ãµã¤ãº | 説æ |
---|---|---|
attribute_name_index | 2byte | å±æ§å"Exceptions"ã示ãconstant_poolã®idã |
attribute_length | 4byte | å±æ§å¤ã®é·ãã |
number_of_exceptions | 2byte | ä¾å¤ã®æ°ã |
exception_index_table | å¯å¤(2byte*number_of_exceptions) | ä¾å¤ã示ãconstant_poolã®idãnumber_of_exceptionsæ°ã ãç¶ãã |
InnerClasseså±æ§
ã¯ã©ã¹/ã¤ã³ã¿ã¼ãã§ã¤ã¹ã§å®ç¾©ãããã¤ã³ãã¼ã¯ã©ã¹ã®æ å ±ãè¨é²ãããã¯ã©ã¹å±æ§ãã¡ã½ããå ã¯ã©ã¹ãã¯ã©ã¹ã®ã¤ã³ãã¼ã¯ã©ã¹ã¨ãã¦ãã®å±æ§ã§ä¿æãããã
å称 | ãµã¤ãº | 説æ |
---|---|---|
attribute_name_index | 2byte | å±æ§å"InnerClasses"ã示ãconstant_poolã®idã |
attribute_length | 4byte | å±æ§å¤ã®é·ãã |
number_of_classes | 2byte | ã¤ã³ãã¼ã¯ã©ã¹ã®æ°ã |
classes | å¯å¤(8byte*number_of_classes) | ã¤ã³ãã¼ã¯ã©ã¹ã®æ å ±ããã¼ã¿å½¢å¼ã¯å種âãåç §ãnumber_of_classesæ°ã ãç¶ãã |
classeså ã®ãã¼ã¿
å称 | ãµã¤ãº | 説æ |
---|---|---|
inner_class_info_index | 2byte | ã¤ã³ãã¼ã¯ã©ã¹ã示ãconstant_poolã®idã |
outer_class_info_index | 2byte | ã¤ã³ãã¼ã¯ã©ã¹ãæã¤ã¯ã©ã¹?ã示ãconstant_poolã®idãç¡åã¯ã©ã¹ã®å ´åã0ã«ãªãã |
inner_name_index | 2byte | ã¤ã³ãã¼ã¯ã©ã¹ã®ååã示ãconstant_poolã®idãç¡åã¯ã©ã¹ã®å ´åã0ã«ãªãã |
inner_class_access_flags | 2byte | ã¤ã³ãã¼ã¯ã©ã¹ã®ã¢ã¯ã»ã¹æ¨©æ å ± |
EnclosingMethodå±æ§
ã¯ã©ã¹ãå®ç¾©ãããã¡ã½ããã示ãå±æ§ãã¡ã½ããå ã§å®ç¾©ãããã¯ã©ã¹ãæã¤ã
å称 | ãµã¤ãº | 説æ |
---|---|---|
â attribute_name_index | 2byte | å±æ§å"EnclosingMethod"ã示ãconstant_poolã®idã |
â attribute_length | 4byte | å±æ§å¤ã®é·ãã |
â class_index | 2byte | ã¯ã©ã¹ãåå°ããã¡ã½ãããæã¤ã¯ã©ã¹ã示ãconstant_poolã®idã |
â method_index | 2byte | ã¯ã©ã¹ãåå°ããã¡ã½ããã示ãconstant_poolã®idã |
Deprecatedå±æ§
Deprecatedã示ãå±æ§ãã¯ã©ã¹ããã£ã¼ã«ããã¡ã½ãããæã¡å¾ãã
å称 | ãµã¤ãº | 説æ |
---|---|---|
â attribute_name_index | 2byte | å±æ§å"Deprecated"ã示ãconstant_poolã®idã |
â attribute_length | 4byte | å±æ§å¤ã®é·ãã |
ããã¾ã§ã®è§£æã³ã¼ã
åä½ãµã³ãã«
Deprecatedãªã¯ã©ã¹ã
package com.example; /** * @deprecated */ public class Deprecated { /**@deprecated*/ static final int DEPRECATED_FIELD = 0; /**@deprecated*/ Deprecated() {} /**@deprecated*/ public void deprecatedMethod () {} }
解æ!
require "javaclass" ["./java_class/com/example/Deprecated.class"].each { |c| open( c, "r+b" ) {|io| jc = JavaClass.from io puts jc.to_s puts "" } }
å®è¡çµæã§ããdeprecatedãã³ã¡ã³ãã§åºåããããã«ãã¦ãã¾ãã
// version 49.0 // !!Deprecated!! // source Deprecated.java public class com.example.Deprecated extends java.lang.Object { // !!Deprecated!! static final int DEPRECATED_FIELD = 0; // !!Deprecated!! void <init> ( ) {}; // !!Deprecated!! public void deprecatedMethod ( ) {}; }