小编ros*_*nek的帖子

使用类型参数生成构造函数调用

我想TreeMaker在我的 netbeans 代码生成器插件中使用类型参数生成构造函数调用。此外,我想导入类型而不是使用完全限定的名称(请参阅 参考资料QualIdent)。

我正在为此目的使用该NewClass方法

例子:

给定输入java.util.ArrayListjava.lang.Integer生成的代码应该类似于:

import java.util.ArrayList;

...

new ArrayList<Integer>();
Run Code Online (Sandbox Code Playgroud)

如果输入是java.util.ArrayListjava.util.List<java.lang.Integer>并且生成的代码应该类似于:

import java.util.ArrayList;
import java.util.List;

...

new ArrayList<List<Integer>>();
Run Code Online (Sandbox Code Playgroud)

(类型参数列表存储为List<? extends TypeMirror>

如何生成所需的输出?

到目前为止我尝试过的:

makerTreeMaker实例)

  1. 将类型名称转换为字符串:

    String className = "java.util.ArrayList<java.util.List<java.lang.Integer>>"; // actually computed in real code
    
    maker.NewClass(null,
                   Collections.<ExpressionTree>emptyList(),
                   maker.QualIdent(className),
                   Collections.<ExpressionTree>emptyList(),
                   null);
    
    Run Code Online (Sandbox Code Playgroud)

    这会产生语法/语义正确的 java 代码,但使用完全限定的类名,即 new java.util.ArrayList<java.util.List<java.lang.Integer>>()

  2. 通过typeArgumentsNewClass

    List<ExpressionTree> typeArguments = Collections.singletonList(maker.QualIdent("java.lang.Integer")); // actually computed …
    Run Code Online (Sandbox Code Playgroud)

java code-generation netbeans-platform netbeans-8

5
推荐指数
0
解决办法
202
查看次数

将Spark DataFrame转换为Pojo对象

请看下面的代码:

    //Create Spark Context
    SparkConf sparkConf = new SparkConf().setAppName("TestWithObjects").setMaster("local");
    JavaSparkContext javaSparkContext = new JavaSparkContext(sparkConf);
    //Creating RDD
    JavaRDD<Person> personsRDD = javaSparkContext.parallelize(persons);
    //Creating SQL context
    SQLContext sQLContext = new SQLContext(javaSparkContext);
    DataFrame personDataFrame = sQLContext.createDataFrame(personsRDD, Person.class);
    personDataFrame.show();
    personDataFrame.printSchema();
    personDataFrame.select("name").show();
    personDataFrame.registerTempTable("peoples");
    DataFrame result = sQLContext.sql("SELECT * FROM peoples WHERE name='test'");
    result.show();
Run Code Online (Sandbox Code Playgroud)

在此之后,我需要将DataFrame - 'result'转换为Person Object或List.提前致谢.

java apache-spark apache-spark-sql

4
推荐指数
2
解决办法
1万
查看次数