Tag: 接口

C#中接口的Java 1.6 @Override等效

这个问题给出了Java的@Override在方法上具有override关键字的C#等价物的答案。 但是,从Java 1.6开始,@ Override注释也可以应用于接口。 实际使用的是,在Java中,当一个类声称它实现了一个接口方法时(例如,如果删除了接口方法),就会遇到编译错误。 C#中有相同的function吗? 一些代码示例: Java的: public interface A { public void foo(); // public void bar(); // Removed method. } public class B implements A { @Override public void foo(); @Override public void bar(); // Compile error } C#: public interface IA { void Foo(); // void Bar(); // Removed method. } […]

Java Eclipse @Override错误

我正在编写一个Java类,它正在实现一个名为Command的接口,它包含方法isValid()和run() ,如下所示: public class DailyEnergy implements Command { @Override public boolean isValid(String command) { return false; } @Override public void run(String command) throws Exception { } } 这是Command.java文件: public interface Command { public boolean isValid(String command); public void run(String command) throws Exception; } 在这个类中,我正在实现超类方法isValid()和run() ,我想添加@Override注释,但是Eclipse给出了一个错误,说“方法必须覆盖超类方法”。 即使我拿出方法并使用Eclipse自动导入它们,如果我添加注释,我也会收到错误。 如果有人能够解释为什么我不能使用@Override注释,那将非常感激。

@MustOverride注释?

在.NET中,可以为特定超类中的方法指定“mustoverride”属性,以确保子类覆盖该特定方法。 我想知道是否有人有一个可以达到同样效果的自定义java注释。 基本上我想要的是推动子类覆盖超类中的方法,该超类本身具有必须贯穿的逻辑。 我不想使用抽象方法或接口,因为我希望在super方法中运行一些常用function,但或多或​​少会产生编译器警告/错误,表示派生类应该覆盖给定方法。

Scala类实现两个Java接口 – 如何实现?

我刚开始学习Scala,现在我想知道如何用一个Scala类实现两个不同的Java接口? 假设我有以下用Java编写的接口 public interface EventRecorder { public void abstract record(Event event); } public interface TransactionCapable { public void abstract commit(); } 但是Scala类一次只能扩展一个类。 我怎样才能拥有可以同时履行这两个合同的Scala类? 我是否必须将这些界面映射到特征中? 注意,我的Scala类将用于Java,因为我试图将用Scala编写的新function注入到现有的Java应用程序中。 现有框架期望两个接口合同都得到满足。

Java:设置接口和Collection接口的差异

我只是查看了Set界面,发现它主要(或完全)只重新声明已经在Collection接口中的函数。 Set自己扩展Collection ,那么这是不是意味着Set界面自动拥有Collection所有function? 那么他们为什么要重新申报呢? 例如, Set redeclares this: /** * Returns the number of elements in this set (its cardinality). If this * set contains more than Integer.MAX_VALUE elements, returns * Integer.MAX_VALUE. * * @return the number of elements in this set (its cardinality) */ int size(); /** * Returns true if this set contains […]

Java中是否存在用于满足接口的空方法的习惯用法?

假设我有一个类Foo实现了一个接口,例如MouseListener 。 MouseListener接口由五个方法组成,但我只希望覆盖其中一个方法( mouseClicked() )。 是否有一种标准的,惯用的格式化其他方法的方法? 我倾向于写下以下内容: @Override public void mouseClicked(MouseEvent e) { // (…) <– actual code here } @Override public void mouseEntered(MouseEvent e) { // Do nothing. Exists to satisfy MouseListener interface. } @Override public void mouseExited(MouseEvent e) { // Do nothing. Exists to satisfy MouseListener interface. } @Override public void mousePressed(MouseEvent e) […]

如何从GWT的序列化策略中删除实现类型?

与此问题相反: 如何向GWT的序列化策略白名单添加类型? GWT正在向序列化策略添加不需要的类型并使我的JS膨胀。 如何手动修剪我的GWT白名单? 或者我应该呢? 例如,如果我将接口List放在GWT RPC服务类上,GWT必须生成处理ArrayList,LinkedList,Stack,Vector等的Javascript,即使我的团队知道我们只会返回一个ArrayList。 我可以让方法的返回类型为ArrayList,但我喜欢依赖于接口而不是特定的实现。 毕竟,也许有一天我们会将其切换并返回例如LinkedList。 在这种情况下,我想强制GWT序列化策略仅针对ArrayList和LinkedList进行编译。 没有堆栈或向量。 这些隐含的限制有一个我能想到的巨大缺点:团队的新成员开始返回Vectors,这将是一个运行时错误。 所以除了标题中的问题,你围绕这个设计的经验是什么?

java接口中的静态方法

据我所知,你不能在接口体中声明静态方法。 但是,我不小心在http://docs.oracle.com/ site上找到了一些特殊的代码。 这是链接 Namelly public interface TimeClient { void setTime(int hour, int minute, int second); void setDate(int day, int month, int year); void setDateAndTime(int day, int month, int year, int hour, int minute, int second); LocalDateTime getLocalDateTime(); static ZoneId getZoneId (String zoneString) { try { return ZoneId.of(zoneString); } catch (DateTimeException e) { System.err.println(“Invalid time […]

为什么不必在Java中覆盖接口Comparator的两种方法

我们知道,如果我们想要创建该类的对象,则必须实现接口的所有方法。 但是为什么没有必要在java中实现接口Comparator compare()和equals()方法呢? 我同意目的已经解决,但即使那样,如果我们覆盖compare (),为什么不强制重写equals ()?

在Jar中查找实现接口的类

我想找出jar中的类是否已经实现了特定的接口。 我已经实现了下面的代码,但它遍历jar文件中的所有类,并在每个类上查找它是否已实现此特定接口。 public static synchronized boolean findClassesInJar(final Class baseInterface, final String jarName){ final List classesTobeReturned = new ArrayList(); if (!StringUtils.isBlank(jarName)) { //jarName is relative location of jar wrt. final String jarFullPath = File.separator + jarName; final ClassLoader classLoader = this.getClassLoader(); JarInputStream jarFile = null; URLClassLoader ucl = null; final URL url = new URL(“jar:file:” + […]