我在使用Gson反序列化json字符串时遇到问题.我收到一系列命令.该命令可以是start,stop,其他一些命令.当然我有多态,并且start/stop命令继承自命令.
如何使用gson将其序列化回正确的命令对象?
似乎我只得到基类型,即声明的类型,而不是运行时类型.
我知道这个问题已经被提出,但我正在寻找具有特定功能的Java cli解析器.我希望它能够定义命令行树,从而使用子命令(和多个级别深度).因此,在我到达选项之前,我可以有3-4级命令.这些子命令是互斥的.谢谢
我需要对某些ip /机器执行ping操作.代码可以在任何类型的平台(windows,linux,mac)上执行,我需要获取有关丢失和往返时间的信息.所以java的ping操作不够好,因为那时我需要将ping响应解析为字符串,这对于每个平台和每个OS语言都是不同的.那我需要做什么?我知道有类似JNI的东西,但我是java的新手,所以需要一些帮助.它仍然意味着我需要每个平台都有本机实现?任何例子或建议?
我有一个Web API,用户可能(或可能不)传输URL参数,例如bird,dog等等.
我希望此参数映射到服务器端的枚举,如:
@POST
@Path("/zoo")
public Response createNewAnimal(
@QueryParam("animal")
@DefaultValue("CAT") AnimalType type
) throws Exception
...
public enum AnimalType {
BIG_BIRD,
SMALL_CAT;
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用!
在处理Web请求时,Enum.valueOf()正在调用.当然它失败了,因为该bird用户使用的URL参数与Enum(AnimalType.BIG_BIRD)中的标识符不匹配.
没有办法覆盖到valueOf()方法(它是静态的......),并且设置构造函数没有帮助(它是相反的逻辑方向).
所以也许你知道一个很好的解决方案,而不是只使用if ... else ...?
我需要将文件上传到服务器并监视它的进度.我需要通知每次发送多少字节.
例如,在下载的情况下,我有:
HttpURLConnection connection = (HttpURLConnection) m_url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
while ((currentBytes = stream.read(byteBuffer)) > 0) {
totalBytes+=currentBytes;
//calculate something...
}
Run Code Online (Sandbox Code Playgroud)
现在我需要为上传做同样的事情.但如果使用
OutputStreamWriter stream = new OutputStreamWriter(connection.getOutputStream());
stream.write(str);
stream.flush();
Run Code Online (Sandbox Code Playgroud)
比我无法获得任何进程通知,关于发送了多少字节(它看起来像自动操作).
有什么建议?
谢谢
我有java 6嵌入式HttpServer.它有一个句柄,允许客户下载一个大文本文件.问题是,当服务器有10个以上的同时客户端时,我会遇到内存异常.我很清楚问题出在Http Server周围.
HttpServer m_server = HttpServer.create(new InetSocketAddress(8080), 0);
m_server.createContext("/DownloadFile", new DownloadFileHandler() );
public class DownloadFileHandler implements HttpHandler {
private static byte[] myFile = new String("....................").getBytes(); //string about 8M
@Override
public void handle(HttpExchange exchange) throws IOException {
exchange.sendResponseHeaders(HTTP_OK, myFile .length); OutputStream responseBody = exchange.getResponseBody();
responseBody.write(myFile );
responseBody.close();
}
}
Run Code Online (Sandbox Code Playgroud)
现在我得到的例外是:
java.lang.OutOfMemoryError: Java heap space
at java.nio.HeapByteBuffer.<init>(Unknown Source)
at java.nio.ByteBuffer.allocate(Unknown Source)
at sun.net.httpserver.Request$WriteStream.write(Unknown Source)
at sun.net.httpserver.FixedLengthOutputStream.write(Unknown Source)
at java.io.FilterOutputStream.write(Unknown Source)
at sun.net.httpserver.PlaceholderOutputStream.write(Unknown Source)
at com.shunra.javadestination.webservices.DownloadFileHandler.handle(Unknown Source)
at com.sun.net.httpserver.Filter$Chain.doFilter(Unknown Source)
at sun.net.httpserver.AuthFilter.doFilter(Unknown …Run Code Online (Sandbox Code Playgroud)