通过 JNI 获取子类 Rectangle2D.Double 成员

Get subclass Rectangle2D.Double member via JNI

假设以下 class

import java.awt.geom.Rectangle2D;

class SomeJavaClass
{
    public SomeJavaClass()
    {
        m_rect = new Rectangle2D.Double();
    }
    Rectangle2D.Double m_rect;
}

和以下 C++ 代码

jclass someJavaCls = env->FindClass("my/package/SomeJavaClass");
jfieldID rectID = env->GetFieldID(someJavaCls, "m_rect", "Ljava/awt/geom/Rectangle2D;");

问题是我不知道如何访问 m_rect 的 fieldID。通过上面的 GetFieldID 调用,我得到

Exception in thread "Thread-2" java.lang.NoSuchFieldError: m_rect

但是,如果我将 GetFieldID 的签名更改为 "Ljava/awt/geom/Rectangle2D/Double;",我也会得到同样的异常。这是怎么做到的?

解决方案似乎是 "Ljava/awt/geom/Rectangle2D$Double;",因为 DoubleRectangle2D 的子类。