有没有办法找出一个类是否已重写equals()
和hashCode()
?
您可以使用反射
public static void main(String[] args) throws Exception {
Method method = Bar.class.getMethod("hashCode" /*, new Class<?>[] {...} */); // pass parameter types as needed
System.out.println(method);
System.out.println(overridesMethod(method, Bar.class));
}
public static boolean overridesMethod(Method method, Class<?> clazz) {
return clazz == method.getDeclaringClass();
}
class Bar {
/*
* @Override public int hashCode() { return 0; }
*/
}
false
如果将hashCode()
注释掉,true
如果没有注释,将打印。
Method#getDeclaringClass()
将返回实现该Class
对象的类的对象。
请注意
,仅Class#getMethod(..)
适用于public
方法。但是,在这种情况下,equals()
和hashCode()
必须public
。取决于其他算法,该算法将需要更改。
假设以下示例:
问题内容: 我下面的代码创建一个新数组,并将其发送到chat(jFrame)。 但是我需要修改此代码以使其工作,如果打开了聊天jframe,则不要打开新的jFrame。而是在chat jframe中打开新的选项卡。聊天框的代码是: 问题答案: 我想知道如果该窗口依赖于另一个窗口,那么是否不应该使用JDialogs而不是JFrames。 一种解决方案是使用类字段来保存对窗口(JFrame或JDial
好了, 我有一个标记接口: 然后我有一个类实现这个接口: 现在假设我有一个持有类MePOJO的引用: 那么,我如何通过使用来确定类是否实现了?
问题内容: 我正在使用以下代码 这可以启用或禁用它 但我想作为函数说函数名是 那么我可以按照我的网站代码中的任意位置来称呼它 与我先前的问题几乎相同,请检查是否启用了allow_url_fopen 问题答案: 只需从函数中返回现有支票即可。
我有一个在Docker中运行的Cassandra,我想在数据库准备就绪时启动一个CQL脚本。我尝试检查端口以检测它何时就绪: 但是在数据库真正准备好之前就打开了端口,因此失败。如何正确检查Cassandra状态并启动脚本?提前道谢。
我创建了一个事件。现在我想检查它们是否重叠。我在数据库中以日期格式存储了开始时间和结束时间。 现在我想检查事件的时间是否重叠。为此,我想获取所有事件start Time和endTime,从日期检索小时和分钟,然后将小时和分钟与当前小时和分钟进行比较。 日期格式如下:df=新的SimpleDateFormat(“E-MMM-dd-HH:mm:ss-zz-yyyy”); 我第一次尝试通过查询比较两个日