Я изучаю реализацию компрессора (на Java) для Snappy, Zlib и других. В верхней части исходного файла находится следующая строка. Может ли кто-нибудь объяснить мне, что это значит?Что такое clazz, используемый в исходном файле «private static Class clazz = SnappyDecompressor.class»?
HACK - Use this as a global lock in the JNI layer
@SuppressWarnings({"unchecked", "unused"})
private static Class clazz = SnappyDecompressor.class;
Я понимаю, например, в Snappy, SnappyDecompressor.java, по существу, оболочка для мгновенных C/собственную реализации, а также совершать звонки в эту реализацию C, уровень Java делает вызовы через интерфейс JNI.
Верхняя часть источника для Snappy (Java-оболочки), SnappyDecompressor.java здесь:
package org.apache.hadoop.io.compress.snappy;
import java.io.IOException;
import java.nio.Buffer;
import java.nio.ByteBuffer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.io.compress.Decompressor;
/**
* A {@link Decompressor} based on the snappy compression algorithm.
* http://code.google.com/p/snappy/
*/
public class SnappyDecompressor implements Decompressor {
private static final Log LOG =
LogFactory.getLog(SnappyCompressor.class.getName());
private static final int DEFAULT_DIRECT_BUFFER_SIZE = 64 * 1024;
// HACK - Use this as a global lock in the JNI layer
@SuppressWarnings({"unchecked", "unused"})
private static Class clazz = SnappyDecompressor.class;
Я прошу подлинный вопрос с квесте обучения , Можете ли вы объяснить, почему вы немедленно голосуете честным вопросом без комментариев или объяснений? – nikk
JNI - это способ запуска собственного кода с Java. Похоже, они хотят определить поле, которое код JNI будет ссылаться, на Java. – yshavit