我有一个获取POJO作为参数的方法.现在我想以编程方式获取POJO的所有属性(因为我的代码可能不知道运行时它的所有属性是什么),并且还需要获取属性的值.最后,我将形成POJO的字符串表示.
我可以使用ToStringBuilder,但我希望以特定于我的要求的特定格式构建输出字符串.
是否有可能在Beanutils中这样做?如果是,任何指向方法名称的指针?如果不是,我应该编写自己的反射代码吗?
请考虑以下Java代码:
try{
// do something
// this piece of code throws several checked exceptions.
} catch (IllegalArgumentException e) {
handleException(e);
} catch (IllegalAccessException e) {
handleException(e);
} catch (InvocationTargetException e) {
handleException(e);
} catch (InstantiationException e) {
handleException(e);
} catch (NoSuchMethodException e) {
handleException(e);
} catch (IOException e) {
handleException(e);
} catch (NoSuchFieldException e) {
handleException(e);
}
Run Code Online (Sandbox Code Playgroud)
try块中的代码会抛出几个已检查的异常.我想要做的就是在发生异常时记录消息(带有一些自定义消息字符串).即我的异常处理逻辑对于所有异常都是相同的.
我觉得上面的代码看起来不太好(更多LOC和可读性降低).
有没有更好的办法处理此类案件?
以下解决方案不是最佳实践,因此不推荐(通过检查样式).
try{
// do something very bad
} catch (Exception e) {
handleException(e);
}
Run Code Online (Sandbox Code Playgroud) 我正在用Java开发一个Web应用程序,我在我的lib文件夹中使用了几个第三方JAR文件.我也有Subversion作为我的版本控制工具.
我的问题是,在检查我的项目文件时,我是否应该检入JAR文件,还是不需要对JAR文件进行版本控制,因为我还没有修改它们?
在我的Backbone View中,我定义了这样的事件:
events : {
'click .elm' : 'select',
'dblclick .elm' : 'toggle'
},
select: function(e){
e.preventDefault();
console.log('single clicked');
}
toggle : function(e){
e.preventDefault();
console.log('double clicked');
}
Run Code Online (Sandbox Code Playgroud)
我已将单击和双击事件侦听器绑定到同一元素.elm.当我双击这个元素时,我得到这个输出:
single clicked
single clicked
double clicked
尝试preventDefault()和stopImmediatePropagation()并没有解决不了的问题.
那么,当我双击时,如何防止单击事件被触发?
我是Linux系统的新手,最近我开始使用Ubuntu 10.04.当我在Windows中进行Java开发时,我通常会将项目文件保存在某个驱动器下(例如D:)并保存在我的开发文件夹下,例如D:\ projects\myproj.但我对Ubuntu的文件夹结构感到困惑.所以,我只是想知道你如何在Ubuntu中组织你的项目?我们在哪个文件夹下保存我们的项目文件?
我正在使用JDK1.6.当我实现一个接口并在实现类中,如果我@override在我的函数名之前给出,Eclipse会抛出一个编译错误.即根据Eclipse,下面的代码是错误的.
public class SomeListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// code
}
/* other overridden methods here */
}
Run Code Online (Sandbox Code Playgroud)
如果我删除@Override注释,那么代码编译正常.这是否意味着JDK1.6不再要求我们为@override注释添加前缀?
我刚开始学习Android开发.我在视图中包含了一个EditText组件,并在Eclipse中启动了模拟器.
当我输入文本框时,自动建议会以中文显示,但我想将其更改为英文.
如何更改此区域设置和Android模拟器?
我正在使用Android 2.1进行开发.
我正在使用Play framework 2.2作为我即将推出的Web应用程序之一.我已经以同步模式实现了我的控制器,有几个阻塞调用(主要是数据库).
例如,
public static Result index(){
User user = db.getUser(email); // blocking
User anotherUser = db.getUser(emailTwo); // blocking
...
user.sendEmail(); // call to a webservice, blocking.
return ok();
}
Run Code Online (Sandbox Code Playgroud)
因此,在优化代码的同时,决定利用Play的异步编程支持.通过文档,但这个想法对我来说仍然含糊不清,因为我对如何正确地将上述同步代码块转换为Async感到困惑.
所以,我提出了以下代码:
public static Promise<Result> index(){
return Promise.promise(
new Function0<Result>(){
public Result apply(){
User user = db.getUser(email); // blocking
User anotherUser = db.getUser(emailTwo); // blocking
...
user.sendEmail(); // call to a webservice, blocking.
return ok();
}
}
);
}
Run Code Online (Sandbox Code Playgroud)
所以,我只是将整个控制逻辑包装在一个promise块中.
是否有任何Java helper utils /库可用于解析Rss/Atom提要?
我检查了RSSUtils,但它看起来过时了.
我在Eclipse IDE中使用了很多代码格式化命令(Ctrl+ Shift+ F).虽然这对Java/CSS源代码非常有效,但JSP格式化很糟糕.
是否有任何插件可以在Eclipse IDE中更好地进行JSP格式化?通过格式化我的意思是适当缩进JSP/HTML标记.
java ×7
eclipse ×2
android ×1
annotations ×1
asynchronous ×1
backbone.js ×1
exception ×1
feed ×1
javascript ×1
jdk1.6 ×1
jsp ×1
linux ×1
locale ×1
parsing ×1
reflection ×1
rss ×1
svn ×1
ubuntu ×1