背景:
所以我有一个方法调用,我想保存到一个文本文件中。这样做的目的是将可运行的序列化对象保存到文本文件中,并在以后从文本文件中获取要执行的对象。
final Runnable runnable = () -> { //Runnable object to serialize
client.publish("me/feed", GraphResponse.class,
Parameter.with("message", statusMessage));
};
final String gson = new Gson().toJson(runnable); // Serialized runnable as json. This works successfully.
final Runnable x = new Gson().fromJson(gson, Runnable.class); // error
错误是:
java.lang.RuntimeException: Unable to invoke no-args constructor for interface java.lang.Runnable. Registering an InstanceCreator with Gson for this type may fix this problem.
我理解错误,Runnable是一个接口,它不能被序列化。然而,我还能做些什么来解决我的问题吗?
解决方案尝试1。错误
public class RunnableImplementation implements Runnable, Serializable {
Runnable runnable;
public RunnableImplementation() {
}
public RunnableImplementation(final Runnable runnable) {
this.runnable = runnable;
}
@Override
public void run() {
runnable.run();
}
}
public class ExampleClass {
public static void main(String[] args) {
final Runnable runnable = () -> {
client.publish("me/feed", GraphResponse.class,
Parameter.with("message", statusMessage));
};
RunnableImplementation x = new RunnableImplementation(runnable);
String gson = new Gson().toJson(x);
RunnableImplementation runnableImplementation = new Gson().fromJson(gson, RunnableImplementation.class); // causes same error as above
}
}
我可以向您推荐的一种盲目尝试是创建一些runnable的实现,并用它来尝试您的代码。例如:
public class Main {
public static void main(String[] args) {
Runnable a = new A();
String gson = new Gson().toJson(a);
Runnable runnable = new Gson().fromJson(gson, A.class);
runnable.run();
}
public static class A implements Runnable{
public void run() {
System.out.println("Here im");
}
}
}
顺便说一句,更换我的系统。出来println(“我在这里”)
由
您的客户编写。发布
问题内容: 在使用Nest构建我的Elasticsearch查询时,我希望能够看到发送到Elasticsearch的JSON版本。这可能吗?我想是某种解串器。 这是我的后续问题的信息: 问题答案: 对。您可以像这样使用ElasticClient公开的序列化器: 您也可以直接使用Newtonsoft或任何JSON库来序列化查询对象。不过,在ElasticClient中使用序列化器(本质上是包装New
问题内容: 我有一个使用处理程序发布可运行实例的线程。它工作得很好,但是我很好奇我如何将参数传递给Runnable实例使用?也许我只是不了解此功能的工作原理。 为了避免出现“您为什么需要此问题”的问题,我有一个线程化的动画,必须调出UI线程来告诉它实际绘制的内容。 问题答案: 只需使用接受参数的构造函数实现的类就可以了, 您可以使用参数化构造函数创建Runnable类的实例。
我试图找到一种通过json和spring mvc 3.1传递复杂对象的方法。我也在使用knockoutjs,所以将ko.tojson等效为json.stringify。 部署 以下是ajax调用: spring控制器代码如下所示: 使用适当的公共getter/setter。 当我尝试进行这个调用时,我得到一个错误400客户机发送的请求语法不正确()。 复杂对象都是通过json get早些时候获得的
问题内容: 我在实现Runnable的类中的run()中调用的方法被设计为引发异常。 但是Java编译器不允许我这样做,建议我用try / catch包围它。 问题是,通过用try / catch包围它,我使 特定的 run()无效了。我 确实 想抛出该异常。 如果我指定的run()的本身,编译器会抱怨说。 通常,我对run()不会抛出异常完全满意 。但是,在我必须具有该功能的特殊情况下。 如何解
我在实现Runnable的类的run()中调用的方法被设计为引发异常。 但是Java编译器不允许我这样做,建议我用try/catch来围绕它。 问题是,通过使用try/catch将其包围,我使特定的run()变得无用。我确实想抛出该异常。 如果我为run()本身指定了throws,编译器会抱怨异常与Runnable中的throws子句不兼容。run()。 通常情况下,我完全可以不让run()抛出异
问题内容: 我正在寻找一种将POJO直接转换为JacksonTreeModel的方法。我知道存在从POJO到JSON-String的转换,并且支持TreeModel到JSON-String的转换—但是我正在寻找POJO到TreeModel的转换。有办法吗? 用例如下: 服务器端模板是使用Mustache的Java实现完成的。这使用了Jackson的TreeModel。 之后,我需要在客户端上精简版