将对象转换为接口并返回 java

Convert object to interface and back in java

我有一个接口 A,它有一个方法:

public interface A { public double doSth(); }

和实现 A 并具有其他方法的 B class:

    class B implements A {
        private String name;

        @Override
        public double doSth();//returns the lenght of the name

        public void getName(){}
}

在主体 class 中,我有一个 A 类对象的数组列表和一个从数组列表中查找具有 doSth() 和 [=27= 最大值的对象的方法] 对此对象的引用。

public class Main {

    public static void main(String[] args) {
         ArrayList<A> array = new ArrayList<>();

}

public static A a(ArrayList<A> array){
 A aObject = null;
    double temp = 0;
    for (A bObject: array){
        if(bObject.doSth()>temp){
            temp = aObject.doSth();
            aObject = bObject;
        }
    }
    return aObject;

}

我需要做的是在main中使用这个方法,然后打印一个方法作为A类对象返回的对象的名称。是否有可能做到这一点?是否有可能将 A 对象转换回 B class?

是的。使用 instanceof,您可以测试哪种类型的 class 实现了您的 interface,然后将其转换为 class。

例如:

List<A> myList = getMyList();

A foo= a(myList);

if (foo instanceof B) {
  B bar = (B)foo;
  System.out.println(bar.getName());
}