Class JavaClass::ClassFile::ClassVersion
In: lib/javaclass/classfile/class_version.rb
Parent: Object

Version of a class file.

Author:Peter Kofler
See:java.sun.com/docs/books/jvms/second_edition/html/ClassFile.doc.html#75883

Methods

dump   jdk_version   new   to_f   to_s  

Attributes

major  [R] 
minor  [R] 

Public Class methods

Extract the class version from the bytes data starting at position start (which is usually 4).

[Source]

# File lib/javaclass/classfile/class_version.rb, line 15
      def initialize(data, start=4)
        @minor = data.u2(start)
        @major = data.u2(start+2)
      end

Public Instance methods

Return a debug output of this version.

[Source]

# File lib/javaclass/classfile/class_version.rb, line 40
      def dump
        ["  minor version: #{@minor}", "  major version: #{@major}"]
      end

Return the JDK version corresponding to this version like "1.6" or "unknown" if none matched.

[Source]

# File lib/javaclass/classfile/class_version.rb, line 45
      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

Return the version as major.minor float.

[Source]

# File lib/javaclass/classfile/class_version.rb, line 26
      def to_f
        @major + @minor/denom
      end

Return the class file version as major.minor string like 48.0 (Java 1.4) or 50.0 (Java 6).

[Source]

# File lib/javaclass/classfile/class_version.rb, line 21
      def to_s
        "#{@major}.#{@minor}"
      end

[Validate]