Java Ruby 中的匿名接口实现
Java Anonymous Interface implementation in Ruby
我想在 Ruby 中转换以下 java 匿名接口实现。我是 Ruby 编码的新手。
DiscoveryHandler discoveryHandler = new DiscoveryHandler() {
List<DiscoveredPrinter> printers = new ArrayList<DiscoveredPrinter>();
public void foundPrinter(DiscoveredPrinter printer) {
printers.add(printer);
}
public void discoveryFinished() {
for (DiscoveredPrinter printer : printers) {
System.out.println(printer);
}
System.out.println("Discovered " + printers.size() + " printers.");
}
public void discoveryError(String message) {
System.out.println("An error occurred during discovery : " + message);
}
};
其中 DiscoveryHandler 是一个 Java 接口,其中包含三个方法。
1.找到打印机()
2.发现完成()
3.发现错误()
我认为,在创建它的实例(在上面的例子中是 discoveryHandler)时应该被覆盖。我不知道。
提前致谢。
如果接口只有一个方法(或者它是一个 Java 8 功能的方法),你可以简单地通过在一个地方使用一个块来实现它,一个方法将 DiscoveryHandler
作为它的最后一个参数例如:
someJavaObject.registerHandler do |printer| # foundPrinter(printer)
printers.add printer # assuming registerHandler(DiscoveryHandler)
end
也可以使用单个块实现多个接口方法,在这种情况下,您将获得 Java 方法名称作为第一个块参数。
从你的样本中看不清楚接口方法是什么,你似乎没有 JRuby 块到 iface 转换的用例,尤其是。因为你持有状态。
我想在 Ruby 中转换以下 java 匿名接口实现。我是 Ruby 编码的新手。
DiscoveryHandler discoveryHandler = new DiscoveryHandler() {
List<DiscoveredPrinter> printers = new ArrayList<DiscoveredPrinter>();
public void foundPrinter(DiscoveredPrinter printer) {
printers.add(printer);
}
public void discoveryFinished() {
for (DiscoveredPrinter printer : printers) {
System.out.println(printer);
}
System.out.println("Discovered " + printers.size() + " printers.");
}
public void discoveryError(String message) {
System.out.println("An error occurred during discovery : " + message);
}
};
其中 DiscoveryHandler 是一个 Java 接口,其中包含三个方法。 1.找到打印机() 2.发现完成() 3.发现错误() 我认为,在创建它的实例(在上面的例子中是 discoveryHandler)时应该被覆盖。我不知道。 提前致谢。
如果接口只有一个方法(或者它是一个 Java 8 功能的方法),你可以简单地通过在一个地方使用一个块来实现它,一个方法将 DiscoveryHandler
作为它的最后一个参数例如:
someJavaObject.registerHandler do |printer| # foundPrinter(printer)
printers.add printer # assuming registerHandler(DiscoveryHandler)
end
也可以使用单个块实现多个接口方法,在这种情况下,您将获得 Java 方法名称作为第一个块参数。
从你的样本中看不清楚接口方法是什么,你似乎没有 JRuby 块到 iface 转换的用例,尤其是。因为你持有状态。