有没有一个很好的理由没有:
OptionalInt.ofNullable(Integer);
Run Code Online (Sandbox Code Playgroud)
如果你想将一个可选/可空的Integer转换为OptionalInt,它似乎是一个完美的契合.我目前正在使用我写的这个util方法:
public static OptionalInt optionalIntOfNullable(Integer integer){
return integer == null ? OptionalInt.empty() : OptionalInt.of(integer);
}
Run Code Online (Sandbox Code Playgroud)
那不是那么糟糕,但是,我想知道我是否错过了什么.
我正在使用Spring AOP,因此在我的Spring MVC控制器中间接使用CGLIB.由于CGLIB需要一个默认构造函数,我包含一个,我的控制器现在看起来像这样:
@Controller
public class ExampleController {
private final ExampleService exampleService;
public ExampleController(){
this.exampleService = null;
}
@Autowired
public ExampleController(ExampleService exampleService){
this.exampleService = exampleService;
}
@Transactional
@ResponseBody
@RequestMapping(value = "/example/foo")
public ExampleResponse profilePicture(){
return this.exampleService.foo(); // IntelliJ reports potential NPE here
}
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是,IntelliJ IDEA的静态代码分析报告了一个潜在的NullPointerException,因为它this.exampleService可能为null.
我的问题是:
如何防止这些误报空指针警告?一种解决方案是添加assert this.exampleService != null或使用番石榴Preconditions.checkNotNull(this.exampleService).
但是,必须将此方法添加到此方法中使用的每个字段的每个方法中.我更喜欢我可以在一个地方添加的解决方案.也许是默认构造函数或其他东西的注释?
编辑:
似乎是用Spring 4修复的,但我现在正在使用Spring 3:http: //blog.codeleak.pl/2014/07/spring-4-cglib-based-proxy-classes-with-no-default-ctor html的
为什么".*"和".+"给出不同的结果?
System.out.println("foo".replaceAll(".+", "bar")); // --> "bar"
System.out.println("foo".replaceAll(".*", "bar")); //--> "barbar"
Run Code Online (Sandbox Code Playgroud)
我希望两者都是"bar",因为*和+都是贪婪的,应该匹配整个String.(以上示例是Java,但其他工具,如http://www.gskinner.com/RegExr/给我相同的结果)
我想向不同的收件人发送数千封不同的电子邮件,并希望打开与我的SMTP的连接并保留它.我希望这更快,然后重新打开ervy邮件的连接.我想使用Apache Commons Email,但如果有必要,可以回退到Java Mail API.
现在我正在这样做,每次打开关闭连接:
HtmlEmail email = new HtmlEmail();
email.setHostName(server.getHostName());
email.setSmtpPort(server.getPort());
email.setAuthenticator(new DefaultAuthenticator(server.getUsername(), server.getPassword()));
email.setTLS(true);
email.setFrom("test@example.com");
email.addTo(to);
email.setSubject(subject);
email.setHtmlMsg(htmlMsg);
email.send();
Run Code Online (Sandbox Code Playgroud) 我们使用Selenium从我们的Web应用程序测试文件下载.目前我们正在使用Firefox,将其设置为所需的下载目录,并确保没有弹出对话框,下载文件时不需要用户交互.
对于FirefoxDriver,我们这样做:
File downloadDir = ...;
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.dir", downloadDir.getAbsolutePath());
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "...");
WebDriver driver = new FirefoxDriver(profile);
Run Code Online (Sandbox Code Playgroud)
为InternetExplorerDriver做些什么来达到同样的效果?我找不到InternetExplorerProfile,也找不到DesiredCapabilities中的开关.
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("???", "???");
WebDriver driver = new InternetExplorerDriver(capabilities);
Run Code Online (Sandbox Code Playgroud) 使用JasperReports导出PDF时,有没有办法在textfields中使用markup = html包含图像和表格?
当我将带有markup = html的文本字段添加到我的报告中时,提供了开箱即用的基本HTML支持,例如:
<textField>
<reportElement .../>
<textElement markup="html"/>
<textFieldExpression><![CDATA["<html>some <b>bold</b> text</html>"]]></textFieldExpression>
</textField>
Run Code Online (Sandbox Code Playgroud)
但是,似乎不支持更复杂的HTML.如果我做对了,就必须编写一个自定义MarkupProcessor来将传入的HTML转换为jrxml并将其插入JasperReports引擎来处理更复杂的示例.
由于我们使用CKEditor来处理输入,因此使用的标记列表应该是可管理的.其次,我们已经使用Jsoup来解析和清理HTML,这可能对实现MarkupProcessor很有用.
有没有我可以建立的例子?正如我说过的,我主要是寻找图像(img)和表(table,tr,td)的支持.
如果没有,是否有替代方法可以使用JasperReports实现这一目标?
我想写一个应用程序,从麦克风中拾取声音,添加效果并实时播放.
如果发现AudioRecord从麦克风和AudioTrack中拾取声音来播放它.在这之间,我需要一些库来操纵声音,添加效果或使用一些均衡器.这可能是通过Java Sound API实现的,但是在我从这个SO问题中指出的这个问题报告中读到的时候似乎也没有.
我的问题是:如何在Android上执行此操作?你能推荐任何图书馆吗?
我正在开发一个应用程序,可以在用户更改内容时自动保存更改,例如输入字段的值.我已经编写了一个autosave指令,该指令被添加到应该自动触发保存事件的所有表单字段中.
模板:
<input ng-model="fooCtrl.name" autosave>
<input ng-model="fooCtrl.email" autosave>
Run Code Online (Sandbox Code Playgroud)
指示:
.directive('autosave', ['$parse', function ($parse) {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attrs, ngModel) {
function saveIfModelChanged () {
// save object containing name and email to server ...
}
ngModel.$viewChangeListeners.push(function () {
saveIfModelChanged();
});
}
};
}]);
Run Code Online (Sandbox Code Playgroud)
到目前为止,这一切对我来说都很好.但是,当我在混合中添加验证时,例如验证输入字段是有效的电子邮件地址,undefined一旦viewValue更改为无效的电子邮件地址,modelValue就会设置为.
我想要做的是:记住最后一个有效的modelValue并在autosaving时使用它.如果用户更改的电子邮件地址是无效的,对象含有name与email仍应保存到服务器.使用当前有效name和最后有效email.
我开始时保存最后一个有效的modelValue,如下所示:
添加验证的模板:
<input type="email" ng-model="fooCtrl.name" autosave required>
<input ng-model="fooCtrl.email" autosave required>
Run Code Online (Sandbox Code Playgroud)
保存lastModelValue的指令:
.directive('autosave', ['$parse', function ($parse) …Run Code Online (Sandbox Code Playgroud) 我正在使用javanica并注释我的hystrix命令方法,如下所示:
@HystrixCommand(groupKey="MY_GROUP", commandKey="MY_COMMAND" fallbackMethod="fallbackMethod")
public Object getSomething(Object request) {
....
Run Code Online (Sandbox Code Playgroud)
我试图对我的回退方法进行单元测试,而不必直接调用它们,即我想调用带@HystrixCommand注释的方法,并在抛出500错误后让它自然地流入回退.这一切都在单元测试之外工作.
在我的单元测试中,我使用弹簧MockRestServiceServer返回500个错误,这部分正在工作,但Hystrix没有在我的单元测试中正确初始化.在我的测试方法开始时,我有:
HystrixRequestContext context = HystrixRequestContext.initializeContext();
myService.myHystrixCommandAnnotatedMethod();
Run Code Online (Sandbox Code Playgroud)
在此之后,我试图通过键获取任何hystrix命令并检查是否有任何已执行的命令,但列表始终为空,我使用此方法:
public static HystrixInvokableInfo<?> getHystrixCommandByKey(String key) {
HystrixInvokableInfo<?> hystrixCommand = null;
System.out.println("Current request is " + HystrixRequestLog.getCurrentRequest());
Collection<HystrixInvokableInfo<?>> executedCommands = HystrixRequestLog.getCurrentRequest()
.getAllExecutedCommands();
for (HystrixInvokableInfo<?> command : executedCommands) {
System.out.println("executed command is " + command.getCommandGroup().name());
if (command.getCommandKey().name().equals(key)) {
hystrixCommand = command;
break;
}
}
return hystrixCommand;
}
Run Code Online (Sandbox Code Playgroud)
我意识到我在单元测试初始化中遗漏了一些东西,任何人都可以指出我正确的方向如何正确地进行单元测试吗?