【发布时间】:2016-11-30 11:14:41
【问题描述】:
我正在探索将一次性实例化作为安全对象处理的一种可能的不同方法的想法。这个想法是在if 语句的条件下完全实例化、测试和处置对象,但是我在实例化对象开始时遇到了一些麻烦。我认为问题在于我是如何处理这个概念的,但我很想看看是否有办法重新组织这个条件。
if((new ResultSet(dbPwdTest.getResultSet())).getString(1).equals(pwd/*need to hash this*/))
{
return true;
}
这有可能吗?目前,编译器返回“无法实例化类型'ResultSet'”。
编辑:也许答案在于使用 PreparedStatement 中包含的 ResultSet,因此以下方法可行:
if(dbPwdTest.getResultSet().getString(1).equals(pwd/*hash! hash! hash!*/))
{
return true;
}
虽然我不确定这种方法是否真的一样。
【问题讨论】:
-
是的,这完全有可能,只是没有
ResultSet。你为什么要创建一个接口的实例? -
ResultSet是一个接口,因此您不能创建它的实例(除非您提供实现)。 -
您认为这如何使您的代码“安全”?
java.sql.ResultSet是一个接口,所以不能这样实例化它。 -
你已经拥有来自
dbPwdTest.getResultSet的ResultSet吗?如果没有,我会认真建议重命名该方法... :-) -
@T.J.Crowder 这个想法是包含整个测试条件(即在条件之外没有实例化),而不允许超过一个外部测试项目。但是,实例化 ResultSet 的实例会有点繁重,这就是为什么我希望这不是必需的。此外,getResultSet 是 PreparedStatement 的一种方法 - 虽然我有一个想法,我将在下面发布。
标签: java instantiation