小编str*_*lle的帖子

Java - 为什么char会被隐式地转换为字节(和简短)原语,什么时候不应该?

编译器的某些功能让我感到困惑(使用Eclipse的Oracle JDK 1.7).

所以我有这本书说char原语需要明确地转换为short和byte,这一切都有意义,因为数据类型的允许范围不重叠.

换句话说,下面的代码可以工作(但如果没有显式类型转换,则无法工作):

char c = '&';  
byte b = (byte)c;
short s = (short)c;
Run Code Online (Sandbox Code Playgroud)

正确打印b或s会显示数字38,这是Unicode中(&)的数字等效值.

这让我想到了我的实际问题.为什么以下工作也一样?

byte bc = '&';
short sc = '&';
System.out.println(bc); // Correctly displays number 38 on the console
System.out.println(sc); // Correctly displays number 38 on the console
Run Code Online (Sandbox Code Playgroud)

现在我肯定会理解以下内容(也适用):

byte bt = (byte)'&';
System.out.println(bt); // Correctly displays number 38 on the console
Run Code Online (Sandbox Code Playgroud)

但是对于字节(和短)"潜行转换"这个无编译器警告字符对我来说似乎不对.

有人可以解释,为什么允许这样做?

原因可能在于对'<char>'自身的解释,因此它实际上并没有达到char原始状态,而是作为数字(八进制或十六进制等)值处理?

java byte type-conversion char implicit-cast

7
推荐指数
2
解决办法
3351
查看次数

如何以编程方式将Swagger API文档发布到Atlassian Confluence?(使用Swagger Confluence工具和Confluence REST API)

我正在尝试使用swagger - confluence独立工具将我的Swagger JSON模式(myapi.json)上传到Atlassian Confluence .

独立的CLI .jar 应该(根据我的理解)这样操作(使用页面进行凭证Base64编码):

java -jar <system path root>/swagger-confluence-cli-all-2.2-RELEASE.jar -u "http(s)://<server>:<port>/confluence/rest/api/" -b "<base64 encoded userid:password string" -a "<parent page id>" -k "<space key>" -g "true" -i "true" -s "<myschema.json>" -t "<Title for generated page>" -m "single"
Run Code Online (Sandbox Code Playgroud)

输出(未找到404):

2016-08-23 15:08:12.177  INFO - [main]  n.s.s.c.s.i.SwaggerToAsciiDocServiceImpl : AsciiDoc Conversion Complete!  
2016-08-23 15:08:12.178  INFO - [main] n.s.s.c.s.i.AsciiDocToXHtmlServiceImpl   : Converting AsciiDoc to XHTML5...
io/console not supported; tty will not be manipulated   
2016-08-23 15:08:16.888 …
Run Code Online (Sandbox Code Playgroud)

confluence swagger confluence-rest-api

7
推荐指数
1
解决办法
6315
查看次数

Java - 新的ArrayList(List)vs empty ArrayList()+ add(element)

我今天已经了解到你可以使用静态方法创建一个新的ArrayList对象,如下所示:

List<String> listDummy = Arrays.asList("Coding", "is", "fun"); 
ArrayList<String> stringList = new ArrayList<>(listDummy);
Run Code Online (Sandbox Code Playgroud)

或者更简洁:

ArrayList<String> stringList = new ArrayList<>(Arrays.asList("Coding", "is", "fun"));
Run Code Online (Sandbox Code Playgroud)

我的问题是:与"传统"方式相比,这种表现有多贵?(下面)

ArrayList<String> stringList = new ArrayList<>();
stringList.add("Coding");
stringList.add("is");
stringList.add("fun");
Run Code Online (Sandbox Code Playgroud)

我意识到创建一个ArrayList的上层方法包括一个额外的List对象创建,但是,我更喜欢更短更紧凑的语法,以至于我愿意牺牲一些性能,但必须在某处画线.

PS.在"new ArrayList <>()"中保留类型信息(<>)为空是Java SE 7的功能,而不是错误.

先谢谢你的回答!

java arraylist

6
推荐指数
2
解决办法
1万
查看次数

Log4j 2配置:XML vs JSON?

Apache手册简单地说:"

Log4j 2的配置可以通过以下四种方式之一完成:
通过用XML,JSON或YAML编写的配置文件.
以编程方式,通过创建ConfigurationFactory和Configuration实现.
以编程方式,通过调用Configuration接口中公开的API将组件添加到默认配置.
以编程方式,通过调用内部Logger类上的方法.

我想听听是否有明显的趋势支持这4种方式中的一种?
这个问题的背后是将Log4j(版本1)配置实践从.properties文件转换为XML格式.搜索问题的答案并获得正确的答案,但使用的配置方法并不完全令人沮丧.

我有一个新的log4j(版本2)项目即将出现,我想使用JSON作为配置格式来对抗默认的XML方式(原因:美学和轻微的性能优势(?)).

如果我选择基于XML的JSON配置格式,是否会遇到问题或者没有获得尽可能多的功能?

使用编程方法而不是静态配置文件的任何理由?

用例(理想情况下)是应用程序服务器(从服务器上的某个文件路径)读取单个配置文件.然后,此单个.json文件将用于为每个应用程序应用日志级别,并为每个应用程序生成至少3个不同的日志(常规,错误,自定义日志级别).设计用于在服务器上运行的应用程序不到10个.

xml logging json log4j log4j2

3
推荐指数
1
解决办法
1223
查看次数