有没有更好的方法来压缩这种方法,即通过避免开关案例来降低圈复杂度?
String monthString;
switch (month) {
case 1: monthString = "January"; break;
case 2: monthString = "February"; break;
case 3: monthString = "March"; break;
case 4: monthString = "April"; break;
case 5: monthString = "May"; break;
case 6: monthString = "June"; break;
case 7: monthString = "July"; break;
case 8: monthString = "August"; break;
case 9: monthString = "September"; break;
case 10: monthString = "October"; break;
case 11: monthString = "November"; break;
case 12: monthString = "December"; break;
default: monthString …Run Code Online (Sandbox Code Playgroud) 如果我在已知异常的情况下使用记录器,那么e.printStackTrace()对于未知异常有什么问题?
我总是被告知不要这样做 - 但没有理由
以下示例
try {
dostuff();
} catch (AException ae) {
logger.error("ae happened");
} catch (BException be) {
logger.error("be happened");
} catch (CException ce) {
logger.error("ce happened");
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud) 我在同一个Web应用程序中有一个要求设置2个会话超时.
普通用户60分钟,管理员用户3小时.
我被告知这是不可能的,我需要为管理员主持一个单独的Web应用程序.
有没有解决方法?
更新:感谢Bozho和Kurt的回复 - 我有一个后续问题.
session.setMaxInactiveInterval()是否覆盖通过web.xml设置的会话超时值?
我的班级有这种方法
public SomeWebServiceResponse callDownstream(SomeWebServiceRequest request) {
return (SomeWebServiceResponse ) super.callService(request);
}
Run Code Online (Sandbox Code Playgroud)
super方法只是调用Spring WS来进行调用 - 以简化形式
response = getWebServiceTemplate().marshalSendAndReceive(this.getBaseURL(),
request);
return response;
Run Code Online (Sandbox Code Playgroud)
当我编写单元测试时,它试图进行实际的Web服务调用.我不清楚如何嘲笑这个或者更确切地说我们应该嘲笑什么.
我应该从文件系统加载一个示例响应并在其中查找一些字符串 - 在这种情况下,我只测试文件加载.
实际调用是在基类中,我知道我们不能只模拟该方法.有什么指针吗?
我正在运行带有Tomcat的Eclipse 3.5(从WTP集成),我希望在txt中看到输出日志而不仅仅是控制台
无法在我的eclipse /工作区或本地Tomcat 6安装目录中找到它
任何线索如何启用这些?
我也启用org.apache.catalina.valves.RequestDumperValve了输出并在控制台上滚动,我希望在txt中看到
与SonarQube类似,不会通过Gradle为完全覆盖的类显示每个文件的详细报告,但不会显示欺骗.
Sonar Qube版本3.7.4 Gradle版本2.1
运行gradle sonarRunner生成一个Sonar 确实拾取的文件test.exec
14:50:28.167 INFO - Analysing D:\projname\build\jacoco\test.exec
14:50:28.265 INFO - No information about coverage per test.
14:50:28.266 INFO - Sensor JaCoCoSensor done: 106 ms
14:50:28.529 INFO - Execute decorators...
14:50:29.253 INFO - Store results in database
14:50:29.391 INFO - ANALYSIS SUCCESSFUL, you can browse http://localhost:9000/dashboard/index/com.projname
Run Code Online (Sandbox Code Playgroud)
然而,在刷新上述项目时,它显示覆盖率为0%
单位测试覆盖率0.0%0.0%线覆盖率0.0%分支覆盖率
我已经设定
sonarRunner {
sonarProperties {
property 'sonar.jacoco.reportPath', 'D:\\projname\\build\\jacoco\\test.exec'
property 'sonar.junit.reportsPath','$buildDir/test-results'
property 'sonar.tests', "$buildDir/classes/test"
}
}
Run Code Online (Sandbox Code Playgroud)
我试过\和正斜杠 - 它没有什么区别
有任何想法吗?
编辑
根据彼得的回答,删除了 …
根据http://help.eclipse.org/helios/topic/org.eclipse.jst.ws.cxf.doc.user/reference/preferences.html
可以Window > Preferences... > Web Services > CXF 2.x Preferences从顶级菜单访问CXF 2.x首 选项.
但我没有看到CXF 2.x PreferencesWeb服务下的选项,尽管我选择了JavaEE透视图.
任何想法如何启用此功能?对不起这么简单的问题.
根据http://help.eclipse.org/helios/index.jsp?topic=/org.eclipse.jst.ws.jaxws.doc.user/gettingstarted/requirements,我也不能将CXF视为Project Facet . HTML
我知道这与让Eclipse了解CXF库有关,但是找不到这个教程.
这是在Java 6上
我可以有一个通用的方法来处理我的异常 - 所以不要在每个方法中执行n次
try {
// Do something
} catch (XException e) {
// Do something
} catch (YException e) {
// Do something
} catch (ZException e) {
// Do something
}
Run Code Online (Sandbox Code Playgroud)
我有
try {
// Do something
} catch (Exception e) {
handleAll (e);
}
Run Code Online (Sandbox Code Playgroud)
和方法handleAll(e)呢
if e.instanceOf(XException)
else if e.instanceOf(YException)
else if e.instanceOf(ZException)
Run Code Online (Sandbox Code Playgroud)
第二种方法有什么问题吗?
更新:
我最初的问题是关于"集中处理"在一个地方对于检查和运行时异常.答案指出我应该避免使用instanceof().
@ aioobe的想法看起来很整洁.对这种方法有任何负面意见吗?
我正在为演示文稿收集一些数据.
有谁知道Apache Ofbiz上托管的网站或此电子商务软件包的用户在https://cwiki.apache.org/OFBIZ/apache-ofbiz-user-list.html列表之外
我有一些代码是一个包含30多个类的独立Java应用程序.
其中大多数都继承自其他一些基类.
每个类都有这个方法来获取和使用log4j记录器
public static Logger getLogger() {
if (logger != null) return logger;
try {
PropertyUtil propUtil = PropertyUtil.getInstance("app-log.properties");
if (propUtil != null && propUtil.getProperties() != null)
PropertyConfigurator.configure(propUtil.getProperties ());
logger = Logger.getLogger(ExtractData.class);
return logger;
} catch (Exception exception) {
exception.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
A)我的问题是这是否应该重构为一些初始化一次并被所有类使用的常见记录器?这是一种更好的做法吗?
B)如果是,怎么办?我怎样才能通过记录器?
C)这实际上是被在代码中使用不作为Logger.debug(),但getLogger().debug().这在绩效方面有何影响?
我们正在实施一个具有战略模式的系统.
某些特定方法的调用者需要数据的Hashmap,而在某些情况下,它将是用户定义的DTO.有些人需要两者.
我们如何决定使用哪种返回类型,而不是包含Hashmap和DTO的Arraylist?还有更适合的吗?
例:
一些调用者只需要2个字符串并且更喜欢Hashmap.
对同一API的其他一些调用者需要12个适合放入DTO的值.第一个调用者不需要DTO中的所有元素.
第三个调用者需要所有14个值,因此需要两个结构.
我们按照预期在包中布置了一些通用代码.其中一些包是
handler, processor, util, registration等等
这里的常见意味着这些将在多个彼此无关的Java/Java EE项目中重复使用.
问题在于包装的分发.
每个包都包含不同的功能单元,但放在一起,它们是API.
我们应该将个别功能捆绑到JAR中,最后说8到10个罐子.例如:处理程序jar,注册jar等
要么
我们应该采用最小公分母方法,即5个强制包的基础构建到一个罐子里.任何其他人都需要该罐作为基础,并可以选择附加罐.
我们的构建系统是Ant + Ivy,这些依赖项将在编译和构建时解决.
我正在开发基于swing的java应用程序,它通过加载DLL来使用第三方库函数.
DLL调用中的一些功能exit(1)正在关闭整个Java应用程序.是否有任何解决方案可以让我的JVM在遇到时保持活力exit(1).我无权访问C源代码.