编译器的某些功能让我感到困惑(使用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原始状态,而是作为数字(八进制或十六进制等)值处理?
我正在尝试使用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) 我今天已经了解到你可以使用静态方法创建一个新的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的功能,而不是错误.
先谢谢你的回答!
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个.