我一直认为应该重写java中的.equals()方法,使其特定于您创建的类.换句话说,寻找两个不同实例的等价而不是两个对同一实例的引用.但是我遇到过其他程序员,他们似乎认为应该保留默认对象行为并创建一个新方法来测试同一个类的两个对象的等价性.
支持和反对覆盖equals方法的理由是什么?
是否有为接口方法创建默认实现的首选方法或样式?假设我有一个常用的界面,在90%的情况下我想要的功能是相同的.
我的第一直觉是用静态方法创建一个具体的类.然后,当我想要默认功能时,我会将功能委托给静态方法.
这是一个简单的例子:
接口
public interface StuffDoer{
public abstract void doStuff();
}
Run Code Online (Sandbox Code Playgroud)
具体实施方法
public class ConcreteStuffDoer{
public static void doStuff(){
dosomestuff...
}
}
Run Code Online (Sandbox Code Playgroud)
使用默认功能的具体实现
public class MyClass implements StuffDoer{
public void doStuff(){
ConcreteSuffDoer.doStuff();
}
}
Run Code Online (Sandbox Code Playgroud)
这里有更好的方法吗?
编辑
在看到一些提议的解决方案后,我想我应该更清楚我的意图.本质上我试图解决Java不允许多重继承.另外要明确我不是要声明Java是否应该允许多重继承.我只是在寻找为实现接口的类创建默认方法实现的最佳方法.
我在Visual Studio中编写一个报表,它接受用户输入参数并针对ODBC数据源运行.我想手动编写查询并让报告服务将where子句的一部分替换为参数值,然后再将其发送到数据库.似乎正在发生的事情是@parmName我假设将被替换实际上是作为SQL语句的一部分发送的.我错过了某处的配置设置或者这根本不可能吗?
我没有在工具中使用过滤器选项,因为这似乎从数据库中带回完整数据集并在SQL Server上进行过滤.
sql-server odbc sql-server-2008 visual-studio reporting-services