class JavaClass::ClassFile::ClassVersion
Version of a class file.
- Author
-
Peter Kofler
Attributes
major[R]
minor[R]
Public Class Methods
new(data, start=4)
click to toggle source
Extract the class version from the bytes data starting at position start (which is usually 4).
# File lib/javaclass/classfile/class_version.rb, line 14 def initialize(data, start=4) @minor = data.u2(start) @major = data.u2(start+2) end
Public Instance Methods
dump()
click to toggle source
Return a debug output of this version.
# File lib/javaclass/classfile/class_version.rb, line 39 def dump [" minor version: #{@minor}", " major version: #{@major}"] end
jdk_version()
click to toggle source
Return the JDK version corresponding to this version like “1.6” or “unknown” if none matched.
# File lib/javaclass/classfile/class_version.rb, line 44 def jdk_version v = to_f if v >= 45.0 && v <= 45.3 # 1.0.2 supports class file format versions 45.0 through 45.3 inclusive. '1.0' elsif v > 45.3 && v <= 45.65535 # 1.1.X can support class file formats of versions in the range 45.0 through 45.65535 inclusive '1.1' elsif @major >= 46 && @minor == 0 "1.#{@major-44}" else 'unknown' end end
to_f()
click to toggle source
Return the version as major
.minor
float.
# File lib/javaclass/classfile/class_version.rb, line 25 def to_f @major + @minor/denom end
to_s()
click to toggle source
Return the class file version as major
.minor
string like 48.0 (Java 1.4) or 50.0 (Java 6).
# File lib/javaclass/classfile/class_version.rb, line 20 def to_s "#{@major}.#{@minor}" end
Private Instance Methods
denom()
click to toggle source
# File lib/javaclass/classfile/class_version.rb, line 29 def denom if @minor <= 0 1.0 else 1.0 * 10**(Math.log10(@minor).floor + 1) end end