%%classpath add mvn
tech.tablesaw tablesaw-core 0.32.6
tech.tablesaw tablesaw-beakerx 0.32.6
com.jimmoores quandl-tablesaw 2.0.0
%import com.jimmoores.quandl.*
%import com.jimmoores.quandl.tablesaw.*
%import tech.tablesaw.api.*
// display Tablesaw tables with BeakerX table display widget
tech.tablesaw.beakerx.TablesawDisplayer.register()
TableSawQuandlSession session = TableSawQuandlSession.create();
Table table1 = session.getDataSet(DataSetRequest.Builder.of("FRED/BCNSDODNS").build());
table1.column("Value").setName("Corporate Credit");
Table table2 = session.getDataSet(DataSetRequest.Builder.of("FRED/CMDEBT").build());
table2.column("Value").setName("Household Credit");
Table result = table1.join("Date").inner(table2, "Date");
这很奇怪table.join(String)
返回一个dataframejoiner
:https://static.javadoc.io/tech.tablesaw/tablesaw-core/0.32.6/tece/tablesaw/api/table.html#join-java.lang.String...-
我认为,table
是一个iterable
,所以也许Groovy正在使用它自己的join方法。
真正奇怪的是,如果我将Tablesaw版本从0.32.6
切换到0.24.9
,即使table
也在该版本中实现了iterable
知道如何强制Groovy使用Tablesaw库中的join
方法而不是自己的join
方法吗?
您会遇到这个问题,因为table.join()
方法的原型如下:
public DataFrameJoiner join(String... columnNames)
来源:https://static.javadoc.io/tech.tablesaw/tablesaw-core/0.32.6/teck/tablesaw/api/table.html#join-java.lang.string...-
您已经注意到,Groovy通过其join()
方法增强了iterable
类,但其原型如下:
public String join(String separator)
这就是为什么在以下情况下:
table1.join("Date").inner(table2, "Date");
Groovy解析iterable
而不是table
类中的方法。它在0.24.9版本中运行良好,只是因为它提供了一个具有以下原型的方法:
public DataFrameJoiner join(String columnName)
来源:https://static.javadoc.io/tech.tablesaw/tablesaw-core/0.24.9/teck/tablesaw/api/table.html#join-java.lang.string-
您可以通过使用显式的字符串[]
参数信息进行调用来解决这个问题,因此Groovy会立即选择正确的方法。
table1.join(["Date"] as String[]).inner(table2, "Date")
如果传递两个字符串使Groovy选择varargs方法,则无需任何显式的参数类型信息。
table1.join("Date", "Something").inner(table2, "Date")
但是,在单个字符串参数的情况下,由于两个重载方法定义,您需要做出显式参数选择。
问题内容: 我想知道为什么Java对于具有相同名称的实例变量的超类和子类具有这种奇怪的行为。 假设我们有以下类定义: 通过这样做,我们应该隐藏了超类的变量。如果我们没有明确指定的方式来访问的通过电话,那么我们就应该永远无法获得一个孩子的一个实例。 但是,当我们进行强制转换时,此隐藏机制将中断: 这不是完全避开整个野外躲藏点吗?如果是这种情况,那么这是否会使该想法完全没有用? 在子类中,不能用其简单
在java中引发RuntimeException时,需要抑制打印异常消息,而不使用自定义异常。 但是我们应该能够通过调用getMessage()来获取该消息* 运行此片段时,它不应该在控制台中打印“my mesage”。
这似乎是一件奇怪的事情,但是在Java中有没有办法阻止子类添加新方法(包括构造函数),同时仍然允许子类重写方法? 实际情况是,我们有一个带有一些抽象方法和构造函数的
我有一个自定义的Spinner类,它使用一个警报对话框来显示它的内容,它有“提交”和“取消”按钮。警报对话框有一个编辑文本,其他都是只读标签。在单击编辑文本时,虚拟键盘出现,它移动布局,向上移动位,但按钮保持隐藏。我希望按钮也是可见的。 在活动类中:-this.getWindow().setSoftinPutMode(Windowmanager.layoutParams.soft_input_ad
我有一个主类。应用程序中有许多子类是从类扩展而来的。base类公开公共方法,如下所示: 应用程序将在子实例上调用以获得一个检查器实例。每个子类都可以有自定义的基本检查器和验证检查器。他们可以使用和方法实现它,但是他们不能覆盖基类的,因为它包含处理逻辑。 在这里使用关键字合适吗?
我理解不同的行为(与覆盖相比是新的),但不理解术语。