Java 使用sun codemodel创建抽象方法实现?
我正在尝试使用sun codemodel创建以下内容Java 使用sun codemodel创建抽象方法实现?,java,sun-codemodel,Java,Sun Codemodel,我正在尝试使用sun codemodel创建以下内容 JavaRDD<Activitydaily> activityBatchDailyRDDs = activityBatchDailyFunction.cassandraTable("test", "tbl") .map(new Function<CassandraRow, Activitydaily>() { public Activitydaily call(Cass
JavaRDD<Activitydaily> activityBatchDailyRDDs =
activityBatchDailyFunction.cassandraTable("test", "tbl")
.map(new Function<CassandraRow, Activitydaily>() {
public Activitydaily call(CassandraRow v1) throws Exception {
return new Activitydaily();
}
});
下面是我当前的输出
JavaRDD<Activitydaily> ActivitydailyRDD =
ActivitydailyFunction.cassandraTable("demo", "activitydaily")
.map(new Function<CassandraRow, Activitydaily>());
JavaRDD activitydailryrdd=
ActivitydailyFunction.cassandraTable(“演示”、“activitydaily”)
.map(新函数());
这里真正的问题是:如何定义匿名内部类
要定义anonymouse内部类,只需在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.\u 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();
}
}
);
activityBatchDailyFunction.cassandraTable(“测试”,“待测试”)
.map(新函数(){
公共活动(每日电话)(卡桑德拉罗v1){
每天返回新活动();
}
}
);
Hmm,在哪一行?在回顾中,我注意到我没有用cm替换codeModel(来自您的示例),我已经更新了响应。
activityBatchDailyFunction.cassandraTable("test", "tbl")
.map(new Function<CassandraRow,Activity_daily>() {
public Activity_daily call(CassandraRow v1) {
return new Activity_daily();
}
}
);