我String.format用来创建带参数的格式化字符串.是否有可能告诉格式化程序多次重用一个参数?
String.format(%s FOO %s %s, "test"); //desired output: "test FOO test test"
Run Code Online (Sandbox Code Playgroud) 在使用自动格式化时,如何判断(如果有的话)Eclipse为getter或setter创建单行?
public User getUser() {
return user;
}
Run Code Online (Sandbox Code Playgroud)
至:
public User getUser() { return user; }
Run Code Online (Sandbox Code Playgroud) 我想介绍一些只在开发过程中执行的方法.
我以为我可以Spring @Profile在这里使用注释?但是,如何在类级别上应用此批注,以便仅在属性中配置特定的配置文件时才调用此方法?
spring.profiles.active=dev
Run Code Online (Sandbox Code Playgroud)
将以下内容作为伪代码.如何才能做到这一点?
class MyService {
void run() {
log();
}
@Profile("dev")
void log() {
//only during dev
}
}
Run Code Online (Sandbox Code Playgroud) 我想初始化Map<String, BigDecimal>并希望始终BigDecimal从流外部添加相同的值.
BigDecimal samePrice;
Set<String> set;
set.stream().collect(Collectors.toMap(Function.identity(), samePrice));
Run Code Online (Sandbox Code Playgroud)
但是Java抱怨如下:
收集器类型中的Map(Function,Function)方法不适用于参数(Function,BigDecimal)
为什么我不能从外面使用BigDecimal?如果我写:
set.stream().collect(Collectors.toMap(Function.identity(), new BigDecimal()));
Run Code Online (Sandbox Code Playgroud)
它会起作用,但那当然不是我想要的.
是否可以PatternLayout在log4j2.xml配置文件中定义(命名)?
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="ERROR">
<appenders>
<Console name="CONSOLE" target="SYSTEM_OUT">
<PatternLayout pattern="%d %-5p %C{2} (%F:%L) - %m%n" />
</Console>
<File name="DEBUG_FILE" fileName="debug.txt">
<PatternLayout pattern="%d %-5p %C{2} (%F:%L) - %m%n" />
</File>
</appenders>
<loggers>
<root level="trace">
<appender-ref ref="CONSOLE" />
<appender-ref ref="DEBUG_FILE" />
</root>
</loggers>
</configuration>
Run Code Online (Sandbox Code Playgroud)
在这个例子PatternLayout中重复.我可以用名称以某种方式全局定义它,然后只使用名称引用来设置每个appender的模式吗?
@ConditionalOnClass注释究竟如何工作?
我的目标是仅在jar提供此类包含在类路径中时才加载特定的bean .
我认为我可以注释一个@Beanwith @ConditionalOnClass(MyService.class)并将maven中的依赖声明为可选:
<dependency>
<groupId>de.my</groupId>
<artifactId>my-framework<artifactId>
<optional>true</optional>
</dependency>
@Bean
@ConditionalOnClass(MyService.class)
public MyConditionalBean statistics() {
return new MyConditionalBean();
}
Run Code Online (Sandbox Code Playgroud)
现在,任何具有my-framework依赖性的人都应该自动连接该bean.但是没有依赖的人应该跳过它.
但是当我启动应用程序时,我收到以下错误:
Caused by: java.lang.ClassNotFoundException: de.MyService.class
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702) ~[catalina.jar:7.0.50]
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547) ~[catalina.jar:7.0.50]
Run Code Online (Sandbox Code Playgroud)
所以我可能做错了什么.然后,我如何在依赖项jar和类路径中包含的类上创建bean条件?
从春季文档:
必须存在的类.由于通过加载类字节码解析此注释,因此可以安全地指定此处可能最终不在类路径上的类.
但错误表明不同......
如何设置一个bean验证约束,它List应该至少包含1并且最多包含10个元素?
以下都不起作用:
@Min(1)
@Max(10)
@Size(min=1, max=10)
private List<String> list;
Run Code Online (Sandbox Code Playgroud) 我可以以某种方式在抽象类上对一组注释进行分组,并且扩展此类的每个类都自动分配了这些注释吗?
至少以下不起作用:
@Service
@Scope(value = BeanDefinition.SCOPE_PROTOTYPE)
class AbstractService
class PersonService extends AbstractService {
@Autowired //will not work due to missing qualifier annotation
private PersonDao dao;
}
Run Code Online (Sandbox Code Playgroud) 我可以以某种方式告诉array.contains()方法不使查找区分大小写吗?
List<String> data = Arrays.asList(
"one", Two", "tHRee"); //lots of entries (100+)
data.contains("three");
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用`stream将以下代码重构为lambda表达式,尤其是嵌套的foreach循环:
public static Result match (Response rsp) {
Exception lastex = null;
for (FirstNode firstNode : rsp.getFirstNodes()) {
for (SndNode sndNode : firstNode.getSndNodes()) {
try {
if (sndNode.isValid())
return parse(sndNode); //return the first match, retry if fails with ParseException
} catch (ParseException e) {
lastex = e;
}
}
}
//throw the exception if all elements failed
if (lastex != null) {
throw lastex;
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
我开始时:
rsp.getFirstNodes().forEach().?? // how to iterate the nested 2ndNodes?
Run Code Online (Sandbox Code Playgroud) java ×10
spring ×3
java-8 ×2
java-stream ×2
arrays ×1
collectors ×1
eclipse ×1
lambda ×1
log4j2 ×1
logging ×1
spring-boot ×1
string ×1