simple_usage.txt

Path: lib/generated/examples/simple_usage.txt
Last Update: Sat May 30 00:44:04 +0200 2015

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

Author:Peter Kofler
Copyright:Copyright (c) 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[1]           # => "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[0] # => "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"

[Validate]