如何调用实现导入接口的抽象 class 中的方法?
How to call methods within my abstract class that implements an imported interface?
现在,我有一个 class 'Bag' 实现了一个导入接口 'USet'
我的class'Bag'如下:
package Bag;
import java.util.Iterator;
public class Bag implements USet<Integer>{
@Override
public Iterator<Integer> iterator() {
// TODO Auto-generated method stub
return null;
}
@Override
public int size() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean add(Integer x) {
// TODO Auto-generated method stub
return false;
}
@Override
public Integer remove(Integer x) {
// TODO Auto-generated method stub
return null;
}
@Override
public Integer find(Integer x) {
// TODO Auto-generated method stub
return null;
}
@Override
public void clear() {
// TODO Auto-generated method stub
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Bag<Integer> myBag=new USet<Integer>();
}
}
我无法在我的 main 中调用我的 class 或访问其中的方法。简单地说,我只想在我的 Bag 中添加、删除整数并创建我自己的排序方法。但是,由于这是一个抽象接口,所以我似乎不能只调用它。有解决办法吗?
作为参考,我导入的 USet 是:
package Bag;
public interface USet<T> extends Iterable<T> {
public int size();
public boolean add(T x);
public T remove(T x);
public T find(T x);
public void clear();
}
这是执行此操作的代码。我相信它很简单,所以不需要解释。
package Bag;
import bag.USet;
import java.util.Iterator;
public class Bag implements USet<Integer> {
@Override
public Iterator<Integer> iterator() {
System.out.println("iterator called.");
return null;
}
@Override
public int size() {
System.out.println("size called.");
return 0;
}
@Override
public boolean add(Integer x) {
System.out.println("add called with " + x);
return false;
}
@Override
public Integer remove(Integer x) {
System.out.println("remove called with " + x);
return null;
}
@Override
public Integer find(Integer x) {
System.out.println("find called with " + x);
return null;
}
@Override
public void clear() {
System.out.println("clear called ");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Bag myBag = new Bag();
myBag.add(1);
myBag.add(2);
myBag.add(3);
int size = myBag.size();
}
}
注意:
查看您的 USet 代码,我认为您打算拥有特殊的整数集。如果是这种情况,那么你的 USet 的代码甚至不是一个集合而是一个特殊的 Iterator。要使其成为一个集合,您要么扩展 Collection 接口,要么专门设置。在你的情况下,我相信它是你想要的一套。所以你的代码应该如下所示。
打包袋;
import java.util.HashSet;
public abstract class USet2 extends HashSet<Integer> {
}
和
package bag;
import java.util.Collection;
import java.util.Iterator;
public class Bag2 extends USet2 {
public Bag2() {
super();
}
@Override
public int size() {
return super.size();
}
@Override
public boolean isEmpty() {
return super.isEmpty();
}
@Override
public boolean contains(Object o) {
return super.contains(o);
}
@Override
public Iterator<Integer> iterator() {
return super.iterator();
}
@Override
public Object[] toArray() {
return super.toArray();
}
@Override
public <T> T[] toArray(T[] a) {
return super.toArray(a);
}
@Override
public boolean add(Integer e) {
return super.add(e);
}
@Override
public boolean remove(Object o) {
return super.remove(o);
}
@Override
public boolean containsAll(Collection<?> c) {
return super.containsAll(c);
}
@Override
public boolean addAll(Collection<? extends Integer> c) {
return super.addAll(c);
}
@Override
public boolean removeAll(Collection<?> c) {
return super.removeAll(c);
}
@Override
public boolean retainAll(Collection<?> c) {
return super.retainAll(c);
}
@Override
public void clear() {
super.clear();
}
}
现在,我有一个 class 'Bag' 实现了一个导入接口 'USet'
我的class'Bag'如下:
package Bag;
import java.util.Iterator;
public class Bag implements USet<Integer>{
@Override
public Iterator<Integer> iterator() {
// TODO Auto-generated method stub
return null;
}
@Override
public int size() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean add(Integer x) {
// TODO Auto-generated method stub
return false;
}
@Override
public Integer remove(Integer x) {
// TODO Auto-generated method stub
return null;
}
@Override
public Integer find(Integer x) {
// TODO Auto-generated method stub
return null;
}
@Override
public void clear() {
// TODO Auto-generated method stub
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Bag<Integer> myBag=new USet<Integer>();
}
}
我无法在我的 main 中调用我的 class 或访问其中的方法。简单地说,我只想在我的 Bag 中添加、删除整数并创建我自己的排序方法。但是,由于这是一个抽象接口,所以我似乎不能只调用它。有解决办法吗?
作为参考,我导入的 USet 是:
package Bag;
public interface USet<T> extends Iterable<T> {
public int size();
public boolean add(T x);
public T remove(T x);
public T find(T x);
public void clear();
}
这是执行此操作的代码。我相信它很简单,所以不需要解释。
package Bag;
import bag.USet;
import java.util.Iterator;
public class Bag implements USet<Integer> {
@Override
public Iterator<Integer> iterator() {
System.out.println("iterator called.");
return null;
}
@Override
public int size() {
System.out.println("size called.");
return 0;
}
@Override
public boolean add(Integer x) {
System.out.println("add called with " + x);
return false;
}
@Override
public Integer remove(Integer x) {
System.out.println("remove called with " + x);
return null;
}
@Override
public Integer find(Integer x) {
System.out.println("find called with " + x);
return null;
}
@Override
public void clear() {
System.out.println("clear called ");
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
Bag myBag = new Bag();
myBag.add(1);
myBag.add(2);
myBag.add(3);
int size = myBag.size();
}
}
注意: 查看您的 USet 代码,我认为您打算拥有特殊的整数集。如果是这种情况,那么你的 USet 的代码甚至不是一个集合而是一个特殊的 Iterator。要使其成为一个集合,您要么扩展 Collection 接口,要么专门设置。在你的情况下,我相信它是你想要的一套。所以你的代码应该如下所示。
打包袋;
import java.util.HashSet;
public abstract class USet2 extends HashSet<Integer> {
}
和
package bag;
import java.util.Collection;
import java.util.Iterator;
public class Bag2 extends USet2 {
public Bag2() {
super();
}
@Override
public int size() {
return super.size();
}
@Override
public boolean isEmpty() {
return super.isEmpty();
}
@Override
public boolean contains(Object o) {
return super.contains(o);
}
@Override
public Iterator<Integer> iterator() {
return super.iterator();
}
@Override
public Object[] toArray() {
return super.toArray();
}
@Override
public <T> T[] toArray(T[] a) {
return super.toArray(a);
}
@Override
public boolean add(Integer e) {
return super.add(e);
}
@Override
public boolean remove(Object o) {
return super.remove(o);
}
@Override
public boolean containsAll(Collection<?> c) {
return super.containsAll(c);
}
@Override
public boolean addAll(Collection<? extends Integer> c) {
return super.addAll(c);
}
@Override
public boolean removeAll(Collection<?> c) {
return super.removeAll(c);
}
@Override
public boolean retainAll(Collection<?> c) {
return super.retainAll(c);
}
@Override
public void clear() {
super.clear();
}
}