首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用sun-codemodel创建抽象方法实现?

使用sun-codemodel创建抽象方法实现?
EN

Stack Overflow用户
提问于 2015-06-11 17:47:48
回答 1查看 125关注 0票数 2

我正在尝试使用sun-codemodel创建以下代码。

代码语言:javascript
复制
JavaRDD<Activitydaily> activityBatchDailyRDDs = 
    activityBatchDailyFunction.cassandraTable("test", "tbl")
        .map(new Function<CassandraRow, Activitydaily>() {
            public Activitydaily call(CassandraRow v1) throws Exception {
                return new Activitydaily();
            }
         });

以下是我的代码。但它是完整的。我不知道如何完成它。

代码语言:javascript
复制
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);

下面是我当前的输出。

代码语言:javascript
复制
JavaRDD<Activitydaily> ActivitydailyRDD = 
    ActivitydailyFunction.cassandraTable("demo", "activitydaily")
        .map(new Function<CassandraRow, Activitydaily>());
EN

回答 1

Stack Overflow用户

发布于 2015-06-13 00:03:35

这里真正的问题是:如何定义匿名内部类。

要定义匿名内部类,只需在Jcm实例上使用anonymousClass()方法:

代码语言:javascript
复制
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()调用中使用它:

代码语言:javascript
复制
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);

结果如下所示:

代码语言:javascript
复制
activityBatchDailyFunction.cassandraTable("test", "tbl")
    .map(new Function<CassandraRow,Activity_daily>() {
        public Activity_daily call(CassandraRow v1) {
            return new Activity_daily();
        }
    }
);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30777240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档