com.sun.jna.Native.findDirectMappedClass()方法的使用及代码示例

x33g5p2x  于2022-01-24 转载在 其他  
字(3.4k)|赞(0)|评价(0)|浏览(220)

本文整理了Java中com.sun.jna.Native.findDirectMappedClass()方法的一些代码示例,展示了Native.findDirectMappedClass()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Native.findDirectMappedClass()方法的具体详情如下:
包路径:com.sun.jna.Native
类名称:Native
方法名:findDirectMappedClass

Native.findDirectMappedClass介绍

[英]Find the nearest enclosing class with native methods.
[中]使用本机方法查找最近的封闭类。

代码示例

代码示例来源:origin: net.java.dev.jna/jna

/** Find the nearest enclosing class with native methods. */
static Class<?> findDirectMappedClass(Class<?> cls) {
  Method[] methods = cls.getDeclaredMethods();
  for (Method m : methods) {
    if ((m.getModifiers() & Modifier.NATIVE) != 0) {
      return cls;
    }
  }
  int idx = cls.getName().lastIndexOf("$");
  if (idx != -1) {
    String name = cls.getName().substring(0, idx);
    try {
      return findDirectMappedClass(Class.forName(name, true, cls.getClassLoader()));
    } catch(ClassNotFoundException e) {
      // ignored
    }
  }
  throw new IllegalArgumentException("Can't determine class with native methods from the current context (" + cls + ")");
}

代码示例来源:origin: net.java.dev.jna/jna

/**
 * When called from a class static initializer, maps all native methods
 * found within that class to native libraries via the JNA raw calling
 * interface.
 * @param libName library name to which functions should be bound
 */
public static void register(String libName) {
  register(findDirectMappedClass(getCallingClass()), libName);
}

代码示例来源:origin: net.java.dev.jna/jna

/** Remove all native mappings for the calling class.
  Should only be called if the class is no longer referenced and about
  to be garbage collected.
 */
public static void unregister() {
  unregister(findDirectMappedClass(getCallingClass()));
}

代码示例来源:origin: net.java.dev.jna/jna

/**
 * When called from a class static initializer, maps all native methods
 * found within that class to native libraries via the JNA raw calling
 * interface.
 * @param lib native library to which functions should be bound
 */
public static void register(NativeLibrary lib) {
  register(findDirectMappedClass(getCallingClass()), lib);
}

代码示例来源:origin: org.elasticsearch/jna

/** Find the nearest enclosing class with native methods. */
static Class<?> findDirectMappedClass(Class<?> cls) {
  Method[] methods = cls.getDeclaredMethods();
  for (Method m : methods) {
    if ((m.getModifiers() & Modifier.NATIVE) != 0) {
      return cls;
    }
  }
  int idx = cls.getName().lastIndexOf("$");
  if (idx != -1) {
    String name = cls.getName().substring(0, idx);
    try {
      return findDirectMappedClass(Class.forName(name, true, cls.getClassLoader()));
    } catch(ClassNotFoundException e) {
      // ignored
    }
  }
  throw new IllegalArgumentException("Can't determine class with native methods from the current context (" + cls + ")");
}

代码示例来源:origin: org.elasticsearch/jna

/**
 * When called from a class static initializer, maps all native methods
 * found within that class to native libraries via the JNA raw calling
 * interface.
 * @param libName library name to which functions should be bound
 */
public static void register(String libName) {
  register(findDirectMappedClass(getCallingClass()), libName);
}

代码示例来源:origin: org.elasticsearch/jna

/** Remove all native mappings for the calling class.
  Should only be called if the class is no longer referenced and about
  to be garbage collected.
 */
public static void unregister() {
  unregister(findDirectMappedClass(getCallingClass()));
}

代码示例来源:origin: org.elasticsearch/jna

/**
 * When called from a class static initializer, maps all native methods
 * found within that class to native libraries via the JNA raw calling
 * interface.
 * @param lib native library to which functions should be bound
 */
public static void register(NativeLibrary lib) {
  register(findDirectMappedClass(getCallingClass()), lib);
}

相关文章

Native类方法