Tag: 接口

java中所有接口的超类是什么

在java中,我知道所有“类”的超类都是“Object”类。 我怀疑的是,java中所有“接口”的超类是什么。

Java为什么接口扩展接口

我想知道在什么情况下我们从接口扩展接口? 因为,例如 interface A{ public void method1(); } interface B extends A{ public void method2(); } class C implements B{ @Override public void method1(){} @Override public void method2(){} } 不等于 interface A{ public void method1(); } interface B{ public void method2(); } class C implements A, B{ @Override public void method1(){} @Override public void method2(){} […]

创建可观察列表/集合

我正在尝试在JavaFX 8中创建一个ChoiceBox ,它需要一个Collection 。 我不知道如何创建一个Collection虽然…如果我尝试: ObservableList list = new ObservableList(); 我收到一个错误,说我无法实例化ObservableList因为它是抽象的。 可以理解的。 如果我查看ObservableList的doc,我可以看到SortedList implements ObservableList ,但是我不能这样做: ObservableList list = new SortedList(); 因为没有适用的构造函数。 显然我需要将一个ObservableList传递给SortedList ,这很奇怪,因为我无法创建一个ObservableList 。 constructor SortedList.SortedList(ObservableList,Comparator) is not applicable (actual and formal argument lists differ in length) constructor SortedList.SortedList(ObservableList) is not applicable (actual and formal argument lists differ in length) 我不知道如何解读。 如果我试试 ObservableList list […]

怎么纠正? – “都定义了getObjectCopy(),但是使用了不相关的返回类型” – 但它是* one *函数

我有以下界面heirarchy(所有不相关的function被剥离)。 我在尝试编译时收到此错误: types ValidLineGettable and ValidateValue are incompatible; both define getObjectCopy(), but with unrelated return types 这一切都来自同一个函数 – 不是两个不同的函数具有相同的名称, 在同一个接口中具有相同的function 。 如何处理必须从两个不同的接口inheritance的接口,这两个接口本身必须从单个基接口inheritance? 我发现有两个关于具有相同名称的不同function的SO问题 使用不相关的返回类型inheritance方法 Java – 接口实现中的方法名称冲突 就我而言,它在概念上和名义上都是相同的function。 (虽然我对如何开始使用Copyable界面是个好主意感兴趣…这是我使用的很多代码,并且对我来说效果很好……我最感兴趣的是一般inheritance/设计问题。) 我不清楚如何最好地处理这个问题。 我很感激任何建议。 谢谢。 public interface Copyable { Copyable getObjectCopy(); } interface ValidateValue extends Copyable { //Other functions… @Override ValidateValue getObjectCopy(); } //For classes that may be […]

为什么我会得到一个类强制转换exception(使用generics,可比较)?

我正在尝试实现一个排序和未排序的数组列表。 两者都扩展了一个名为AbstractArrayMyList的类,它包含常见的操作/实现 – toString,clear等…. 这是我的AbstractArrayMyList代码(它实现了我定义的通用接口) public abstract class AbstractArrayMyList implements MyList { protected E[] elementData; ….. } 我选择对elementData进行保护,以便排序和未排序的专用数组列表可以访问它并对其执行操作。 这是我的排序数组列表的声明/代码 public class ArrayListSorted<E extends Comparable> extends AbstractArrayMyList 这一切都很好。 但是当我用这些行测试我的代码时 ArrayListSorted toTestInteger = new ArrayListSorted() toTestInteger.insert(0); assertEquals(toTestInteger.get(0).intValue(), 0); 我得到一个类强制转换exception java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Comparable; at myarraylist.ArrayListSorted.getIndex(ArrayListSorted.java:38) 发生在这里 @Override public int getIndex(E value) { int lo […]

创建接口的“对象”

今天我与一位声称可以创建界面对象的朋友争论不休。 当我说这是不可能的时候,他向我展示了以下一段代码,它看起来与匿名类似。现在的问题是,什么是正确的答案? public interface I { public void f(); } public class InterfaceTest { public static void main(String []args){ new I(){ @Override public void f() { System.out.println(“HELLO”); } }; } } 这真的可以称为创建接口“对象”吗?

使用Java中的接口的匿名内部类

因此,当查看lambda表达式并使用它们来替换Java中的EventHandlers的匿名内部类时,我遇到了一些让我停下来思考的匿名内部类。 例如,在为通常实现ActionListener的东西编写匿名内部类时,我们编写 myJButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e){ //DO SOMETHING } }); 我对此感到困惑的是,ActionListener是一个界面,所以我认为有必要做一些像… myJButton.addActionListener(new myButtonListener implements ActionListener() { @Override public void actionPerformed(ActionEvent e){ //DO SOMETHING } }); 但这甚至都没有编译。 我想我之所以这是显而易见的,相反我们使用私有内部类,我们使用 private MyButtonListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { //DO SOMETHING } } myJButton.addActionListener(new MyButtonListener()); 所以我的问题是: 1)为什么我们能够直接从接口创建匿名内部类而不必通过实现接口的类创建一个? 2)为什么我无法创建一个实现ActionListener的匿名内部类而不是直接来自它,就像我在第二个代码片段中显示的那样?

抽象类和多重inheritance

我们可以通过使用抽象类来实现与接口相同的function,那么为什么java不允许以下代码呢? abstract class Animals { public abstract void run(); } abstract class Animals1 { public abstract void run1(); } class Dog extends Animals,Animals1 { public void run() {System.out.println(“Run method”);} public void run1() {System.out.println(“Run1 method”);} } 我知道只使用接口可以实现多重inheritance,但上面的代码与接口完成的工作完全相同。

java中的接口,类和构造函数

这是关于接口和类的困扰我的事情。 我正在尝试通过名为IPAddressString的类对名为IPAddress的接口进行实现。 Ipadress包含四个部分。 我正在编写一个名为mask的方法,该方法使用给定的掩码屏蔽当前地址。 屏蔽操作是对地址的所有四个部分的按位’和’操作。 你通过我写的名为getOc​​tet的方法获得了所有这四个部分。 (你可以在下面看到)。 好的,所以我需要屏蔽我的this.IpAdress,我用它编写了一个新的通用IPAddress。 在写面具时我遇到了问题。 我计算了4个整数,我想要返回一个新的IPAddress类型。 为了做到这一点,我需要使用我的constructer返回IPAddressString类型,并且通常我不能从IPAddressString转换为IPAddress。 我迷路了。 我该怎么办? 为什么我的结构不适合这个? IPAddressString不是IPAddress的子类型吗? 这是使代码更简单的代码: 这是界面: public interface IPAddress { /** * Returns a string representation of the IP address, eg “192.168.0.1” */ public String toString(); /** * Compares this IPAddress to the specified object * * @param other * the IPAddress to compare […]

线程优先级不能按预期工作?

我使用线程优先级创建了一个程序,我获得了优先级为1的线程和优先级为10的线程的相同点击次数,这令我感到困惑,为什么我得到这个 class clicker implements Runnable { int click = 0; Thread t; private volatile boolean running = true; public clicker(int p) { t = new Thread(this); t.setPriority(p); } public void run() { while (running) { click++; } } public void stop() { running = false; } public void start() { t.start(); } } class hilopri […]