# Example of basic usage of JavaClass to load and inspect class files.

# Author

Peter Kofler

# Copyright

Copyright © 2009, Peter Kofler.

# License

BSD License

# # === Usage #

# 1) require the basic module # require 'javaclass' #

# 2a) load a class directly from the file system # clazz = JavaClass.load_fs('./test/data/access_flags/AccessFlagsTestPublic.class') #

# 2b) or get a class from the system classpath which needs JAVA_HOME to be set # cp = JavaClass.environment_classpath # puts cp.includes?('java/lang/String.class') # => 1 (true) #

# 2c) or look up the class from some JavaClass::Classpath by its Java qualified name # cp = JavaClass.classpath('./test/data/access_flags') # puts cp.includes?('AccessFlagsTestPublic') # => 1 (true) # clazz = JavaClass.load_cp('AccessFlagsTestPublic', cp) #

# 3) then retrieve low level information about the class # puts clazz.version # => “50.0” # puts clazz.constant_pool.items # => “packagename/AccessFlagsTestPublic” # puts clazz.access_flags.public? # => true # puts clazz.access_flags.final? # => false # puts clazz.this_class # => “packagename/AccessFlagsTestPublic” # puts clazz.super_class # => “java/lang/Object” # puts clazz.super_class.to_classname # => “java.lang.Object” # puts clazz.references.referenced_methods # => “java/lang/Object.<init>:()V” # puts clazz.interfaces # => [] #

# Returned class names are not just Strings, but JavaClass::JavaQualifiedName # puts clazz.this_class.to_java_file # => “packagename/AccessFlagsTestPublic.java” # puts clazz.this_class.full_name # => “packagename.AccessFlagsTestPublic” # puts clazz.this_class.package # => “packagename” # puts clazz.this_class.simple_name # => “AccessFlagsTestPublic”