private KeanuSavedBayesNet.NamedParam getTypedParam(String paramName, Object param) {
if (Vertex.class.isAssignableFrom(param.getClass())) {
return getParam(paramName, (Vertex)param);
} else if (DoubleTensor.class.isAssignableFrom(param.getClass())){
return getParam(paramName, builder -> builder.setDoubleTensorParam(getTensor((DoubleTensor) param)));
} else if (IntegerTensor.class.isAssignableFrom(param.getClass())) {
return getParam(paramName, builder -> builder.setIntTensorParam(getTensor((IntegerTensor) param)));
} else if (BooleanTensor.class.isAssignableFrom(param.getClass())) {
return getParam(paramName, builder -> builder.setBoolTensorParam(getTensor((BooleanTensor) param)));
} else if (Double.class.isAssignableFrom(param.getClass())) {
return getParam(paramName, builder -> builder.setDoubleParam((double) param));
} else if (Integer.class.isAssignableFrom(param.getClass())) {
return getParam(paramName, builder -> builder.setIntParam((int) param));
} else if (Long.class.isAssignableFrom(param.getClass())) {
return getParam(paramName, builder -> builder.setLongParam((long) param));
} else if (String.class.isAssignableFrom(param.getClass())) {
return getParam(paramName, builder -> builder.setStringParam((String) param));
} else if (Boolean.class.isAssignableFrom(param.getClass())) {
return getParam(paramName, builder -> builder.setBoolParam((boolean) param));
} else if (Long[].class.isAssignableFrom(param.getClass())) {
return getParam(paramName, (long[]) param);
} else if (Vertex[].class.isAssignableFrom(param.getClass())) {
return getParam(paramName, (Vertex[]) param);
} else if (Integer[].class.isAssignableFrom(param.getClass())) {
return getParam(paramName, (int[]) param);
} else {
throw new IllegalArgumentException("Unknown Parameter Type to Save: " + param.getClass().toString());
}
}