Java:如何为lambda类匿名设置字段
在ruby中,我可以通过以下代码获取请求和参数:Java:如何为lambda类匿名设置字段,java,ruby,lambda,webserver,Java,Ruby,Lambda,Webserver,在ruby中,我可以通过以下代码获取请求和参数: require 'sinatra/base' require 'faraday' class App < Sinatra::Base end Thread.new do App.get("/") do puts "request:#{request} ---- #{File.basename __FILE__}:#{__LINE__}" puts "params:#{params} ---- #{File.basen
require 'sinatra/base'
require 'faraday'
class App < Sinatra::Base
end
Thread.new do
App.get("/") do
puts "request:#{request} ---- #{File.basename __FILE__}:#{__LINE__}"
puts "params:#{params} ---- #{File.basename __FILE__}:#{__LINE__}"
end
App.run!(port: 23333)
end
http = Faraday.new
loop do
begin
http.get("http://localhost:23333")
break
rescue Exception => e
puts e
end
sleep 1
end
# request:#<Sinatra::Request:0x28045e4> ---- ex.rb:9
# params:{} ---- ex.rb:10
package ro.idea.ex;
public class App {
public interface Lamb {
void call();
}
public void get(String url, Lamb l) {
// dynamic set
l.setField("request", "default request");
l.setField("params", "default params");
}
public static void main(String[] args) {
new App().get("/", () -> {
System.out.println(request + "\t\t" + new Exception().getStackTrace()[0].getFileName() + ":" + new Exception().getStackTrace()[0].getLineNumber());
});
}
}
但我想实现如下代码:
require 'sinatra/base'
require 'faraday'
class App < Sinatra::Base
end
Thread.new do
App.get("/") do
puts "request:#{request} ---- #{File.basename __FILE__}:#{__LINE__}"
puts "params:#{params} ---- #{File.basename __FILE__}:#{__LINE__}"
end
App.run!(port: 23333)
end
http = Faraday.new
loop do
begin
http.get("http://localhost:23333")
break
rescue Exception => e
puts e
end
sleep 1
end
# request:#<Sinatra::Request:0x28045e4> ---- ex.rb:9
# params:{} ---- ex.rb:10
package ro.idea.ex;
public class App {
public interface Lamb {
void call();
}
public void get(String url, Lamb l) {
// dynamic set
l.setField("request", "default request");
l.setField("params", "default params");
}
public static void main(String[] args) {
new App().get("/", () -> {
System.out.println(request + "\t\t" + new Exception().getStackTrace()[0].getFileName() + ":" + new Exception().getStackTrace()[0].getLineNumber());
});
}
}
所以我的问题是:如何实现“设置域”?首先,
setField
必须是Lamb
接口的一部分。我的问题是如何实现“setField”内容。@MatheusMoreira,我知道你说的,我可以在Lamb接口中添加设置域,但我认为java的Lambda接口只有一种方法,如果我在这个接口中添加sefField,它将引发“multi-xxx”(我忘记了)错误。