Tag: scala

是否可以在Scala中使用Java 8样式方法引用?

我正在Scala中开发JavaFX8应用程序,但我无法弄清楚如何将方法引用传递给事件处理程序。 为了澄清,我没有使用ScalaFX库,而是直接在JavaFX上构建我的应用程序。 这是相关的代码段。 InputController.java (我用Java编写了这个测试类来隔离问题,只使用方法引用) public class InputController { public void handleFileSelection(ActionEvent actionEvent){ //event handling code } public InputController() { //init controller } } 这工作(Java) InputController inputController = new InputController(); fileButton.setOnAction(inputController::handleFileSelection); 这不起作用(Scala) val inputController = new InputController fileButton.setOnAction(inputController::handleFileSelection) 这是编译器的错误消息(Scala 2.11.6)。 Error:(125, 45) missing arguments for method handleFileSelection in class Main; follow this method with ‘_’ […]

你能分享一个URL解析实现的链接吗?

据我所知,URL包含以下字段: 协议(http,https,ftp等) 用户名 用户密码 主机地址(IP地址或DNS FQDN) 端口(可以暗示) 服务器文档根目录内的文档路径 一组参数和值 文件部分(#) 如 协议://用户:密码@主机:端口/路径/文件ARG1 = VAL1&ARG2 = val2的#部 我需要一个代码来从任何给定的URL字符串中获取任何这些字段的值(如果没有设置,则为null /空值)。 我自己实现这个还是已经有了代码,所以我不需要发明一个轮子? 我对Scala或Java代码特别感兴趣。 C#,PHP,Python或Perl代码也很有用。

为case类的equals / hashCode方法生成了什么代码?

我有一些Java代码,我正在翻译成Scala。 代码由一些不可变的类组成,这些类符合Scala中的case class的目的。 但我不想引入错误,因此我想确保为equals和hashCode生成的代码/行为与当前实现等效。 我已经查看了“Scala编程”,但它只是说 第三,编译器将方法的“自然”实现添加到String,hashCode,并且等于你的类。

Byte数组到String并返回..问题-127

在下面的: scala> (new String(Array[Byte](1, 2, 3, -1, -2, -127))).getBytes res12: Array[Byte] = Array(1, 2, 3, -1, -2, 63) 为什么-127转换为63? 以及如何将其恢复为-127 [编辑:]下面的Java版本(以显示它不仅仅是“Scala问题”) c:\tmp>type Main.java public class Main { public static void main(String [] args) { byte [] b = {1, 2, 3, -1, -2, -127}; byte [] c = new String(b).getBytes(); for (int i = 0; […]

玩! 框架:在模板中定义变量?

我将模板传递给Event对象,我需要做的是检查@event.getSeverity值。 如果值为正,我想以绿色为特定的 着色。 如果值为负,我想用红色为特定的 着色。 我找不到定义变量的方法。 可能吗? 应该是我想的。 无论如何,实现这一目标的最简单方法是什么? 谢谢

JTable中的JProgressBar没有更新

为什么以下代码中的进度条没有更新,如何将它们更新? import java.awt.event.{ActionListener, ActionEvent} import javax.swing.table.{TableCellRenderer, AbstractTableModel} import javax.swing.{Timer, JTable, JProgressBar, JFrame} object TestProgressBar { val frame = new JFrame() val model = new TestModel() val table = new JTable(model) class TestModel extends AbstractTableModel { def getColumnCount = 4 def getRowCount = 4 def getValueAt(y: Int, x: Int) = “%d,%d”.format(x, y) override def setValueAt(value: Any, […]

在Scala中实现具有原始类型的方法

我在Scala中使用Drools Planner(用Java编写)时遇到了问题。 Drools规划器中的一个接口声明为: public interface Score extends Comparable 但是另一个界面使用’Score’作为原始类型: public interface Solution { Score getScore(); 然后我想在Scala中实现这个接口: class MySolution extends Solution { def getScore: Score = … 我收到编译错误:Scala编译器不允许编写’def getScore:Score’。 当我尝试添加’Score [_]’或’Score [whatever]’编译器抱怨类型不兼容时。 我该怎么办?

你如何从Java调用Scala单例方法?

我正在尝试将一些Scala代码注入到我现有的Java应用程序中。 (所以说,我想要更多的乐趣)。 我在Scala中创建了一个单例东西 ScalaPower.scala package org.fun class ScalaPower object ScalaPower{ def showMyPower(time:Int) = { (0 to time-1).mkString(“, “) } } 现在,在OldJava.java中 class OldJava { public void demo(){ System.out.println(?) } } 我应该填写? 那么Java会调用showMyPower方法吗? 我尝试了org.fun.ScalaPower.showMyPower(10)和org.fun.ScalaPower.getInstance().showMyPower(10)但都没有工作。 (使用Jad反编译类文件只显示无意义的代码。) 编辑我删除class ScalaPower声明和scala按预期生成静态方法。 (调用org.fun.ScalaPower.showMyPower(10) 。) 不知道它是否是scala编译器中的错误

用于java.util.concurrent.Future的scala.concurrent.Future包装器

我正在使用Play Framework 2.1.1和一个生成java.util.concurrent.Future结果的外部Java库。 我正在使用scala future而不是Akka,我认为这是Play 2.1的正确选择。 如何在保持代码无阻塞的同时将java.util.concurrent.Future包装到scala.concurrent.Future中? def geConnection() : Connection = { // blocking with get connectionPool.getConnectionAsync().get(30000, TimeUnit.MILLISECONDS) } 上面的代码返回一个连接,但使用了get,所以它变成了阻塞 def getConnectionFuture() : Future[Connection] = { future { // how to remove blocking get and return a scala future? connectionPool.getConnectionAsync().get(30000, TimeUnit.MILLISECONDS) } } 理想情况下,我想要一个scala函数,它返回连接作为未来,如上面的代码,但没有通过get阻止代码。 我还需要在函数中添加什么才能使其无阻塞。 任何指针都会很棒。

从Java访问scala.None

你怎么能从Java访问scala.None ? 最后一行导致编译器死于“类型scala.None不接受参数”。 import scala.Option; import scala.Some; import scala.None; final Option object1 = new Some(“Hi there”); final Option object2 = new None(); 这失败了“无法找到符号构造函数None()”: final Option object2 = new None(); 这失败了“找不到符号变量无”: final Option object2 = None; 在2007年,这曾经工作,但随后Scala改变了。 Java编译器给出error: incompatible types : final Option object2 = scala.None$.MODULE$;