J'ai un programme Java qui communique avec un programme C. J'ai écrit JNI auparavant mais ma structure de sortie était plus simpliste et la structure C contenait juste des doubles/ints et des tableaux de doubles/ints.JNI et accès à une sous-classe
Maintenant, ma structure contient une sous-structure (classe/sous-classe) et je ne sais pas comment changer le code pour accéder aux données/champs de la sous-classe.
Mon code C ressemblait à ceci mais comment puis-je accéder à une valeur comme DefaultFeeAmount
si vous regardez ma classe Java sous ce code .... comment puis-je accéder aux éléments de la sous-classe?
C simple ....
{
jclass out_rec_cls = jenv->GetObjectClass(ptrTo_out_rec);
jfieldID fldID, fldID2;
jintArray arr;
jdoubleArray darr;
jobjectArray oarr;
jsize len;//,len2;
jint *arrElems;
jdouble *darrElems;
jobject *oarrElems;
int i;
char temp_str[100],temp_str2[10000];
fldID = jenv->GetFieldID(out_rec_cls, "ErrorCode", "I");
if(fldID != NULL)
jenv->SetIntField(ptrTo_out_rec, fldID, out_rec->error_code);
}
Java
class FeeOutput {
public double DefaultFeeAmount;
public double MaximumAmount;
public int FeeID;
public int CompType;
public int Handling;
public int CapType;
public int ProfitType;
public int EffectiveDateMonth;
public int EffectiveDateDay;
public int EffectiveDateYear;
public int VendorBasedFee;
public int DealerRequestedFee;
public int DealerFixedTranFee;
public double FeeAmount;
public int FeeCompliant;
public String FeeName = "";
public FeeOutput() {
}
}
public class VFeeOutput {
public static final int NUM_FEES = 100;
public FeeOutput[] FeeStruct = new FeeOutput[NUM_FEES];
public int ErrorCode;
public String ErrorString = "";
public String Version = "";
public VFeeOutput() {
}
}