我正在尝试使用sun-codemodel创建以下代码。
JavaRDD<Activitydaily> activityBatchDailyRDDs =
activityBatchDailyFunction.cassandraTable("test", "tbl")
.map(new Function<CassandraRow, Activitydaily>() {
public Activitydaily call(CassandraRow v1) throws Exception {
return new Activitydaily();
}
});以下是我的代码。但它是完整的。我不知道如何完成它。
JClass cassandraConnector = cm.directClass("com.datastax.spark.connector.cql.CassandraConnector");
JExpression functionExpression = JExpr._new(
function.narrow(cassandraRow, activityBatchDailyRealTimeBean));
JExpression javaRDDAssignmentExpression = JExpr
.invoke(JExpr.ref(className + "Function"), "cassandraTable")
.arg(schema).arg(table);
javaRDDAssignmentExpression = javaRDDAssignmentExpression.invoke("map")
.arg(functionExpression);
executerBlock.decl(javaRDD.narrow(activityBatchDailyRealTimeBean),
className + "RDD", javaRDDAssignmentExpression);下面是我当前的输出。
JavaRDD<Activitydaily> ActivitydailyRDD =
ActivitydailyFunction.cassandraTable("demo", "activitydaily")
.map(new Function<CassandraRow, Activitydaily>());发布于 2015-06-13 00:03:35
这里真正的问题是:如何定义匿名内部类。
要定义匿名内部类,只需在Jcm实例上使用anonymousClass()方法:
JDefinedClass anonymousFunctionClass = cm.anonymousClass(function.narrow(cassandraRow, activityBatchDailyRealTimeBean));
JMethod callMethod = anonymousFunctionClass.method(JMod.PUBLIC, Activitydaily.class, "call");
callMethod._throws(Exception.class);
JVar v1Param = callMethod.param(CassandraRow.class, "v1");
callMethod.body()._return(JExpr._new(cm.ref(Activitydaily.class)));然后在您的JExpr._new()调用中使用它:
JClass cassandraConnector = cm.directClass("com.datastax.spark.connector.cql.CassandraConnector");
// Anonymous inner class declaration:
JDefinedClass anonymousFunctionClass = cm.anonymousClass(function.narrow(cassandraRow, activityBatchDailyRealTimeBean));
JMethod callMethod = anonymousFunctionClass.method(JMod.PUBLIC, Activitydaily.class, "call");
callMethod._throws(Exception.class);
JVar v1Param = callMethod.param(CassandraRow.class, "v1");
callMethod.body()._return(JExpr._new(cm.ref(Activitydaily.class)));
JExpression functionExpression = JExpr._new(anonymousFunctionClass);
JExpression javaRDDAssignmentExpression = JExpr
.invoke(JExpr.ref(className + "Function"), "cassandraTable")
.arg(schema).arg(table);
javaRDDAssignmentExpression = javaRDDAssignmentExpression.invoke("map")
.arg(functionExpression);
executerBlock.decl(javaRDD.narrow(activityBatchDailyRealTimeBean),
className + "RDD", javaRDDAssignmentExpression);结果如下所示:
activityBatchDailyFunction.cassandraTable("test", "tbl")
.map(new Function<CassandraRow,Activity_daily>() {
public Activity_daily call(CassandraRow v1) {
return new Activity_daily();
}
}
);https://stackoverflow.com/questions/30777240
复制相似问题