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