All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jruby.util.collections.ClassValue Maven / Gradle / Ivy

package org.jruby.util.collections;

import org.jruby.util.cli.Options;

/**
 * Represents a cache or other mechanism for getting the Ruby-level proxy classes
 * for a given Java class.
 */
@SuppressWarnings("unchecked")
public abstract class ClassValue {

    public ClassValue(ClassValueCalculator calculator) {
        this.calculator = calculator;
    }

    public abstract T get(Class cls);

    protected final ClassValueCalculator calculator;

    public static  ClassValue newInstance(ClassValueCalculator calculator) {
        if ( CLASS_VALUE ) return newJava7Instance(calculator);
        return new MapBasedClassValue<>(calculator);
    }

    private static  ClassValue newJava7Instance(ClassValueCalculator calculator) {
        return new Java7ClassValue<>(calculator);
    }

    private static final boolean CLASS_VALUE = Options.INVOKEDYNAMIC_CLASS_VALUES.load();

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy