有一个interface face{
        Object getItem();
}Class Item{
       int age;
       String name;
get()
set()}class A implements face{
        Item Item;
        Item getItem(){
               return new Item();
       }  
}我在使用A的时候是想使用接口face来代表A
class test{
     public static void main(){
     face f = new A();
     int age = f.getItem.getAge();//这里就会报错,因为getItem返回的是一个object,我能在这句中进行类型转换吗
    
}}

解决方案 »

  1.   

    int age = ((Item)f.getItem()).getAge();
      

  2.   

    可以进行强制类型装换,像下面这样写
    int age = ((Item)f.getItem()).getAge();
    但是你其他地方的代码有些问题,需要修改
    class A implements Face{
      Item item;
        @Override
        public Object getItem() {
            return new Item();
        }
    }class Item{
      int age;    public int getAge() {
            return age;
        }    public void setAge(int age) {
            this.age = age;
        }    public String getName() {
            return name;
        }    public void setName(String name) {
            this.name = name;
        }    String name;
    }interface Face{
        Object getItem(); 
    }
    class Test{
      public static void main(){
      Face f = new A();
      int age = ((Item)f.getItem()).getAge();}}
      

  3.   


    虽然是new的是Class A但是引用是interface face, face中没有getAge()方法,固然报错
    强制转换引用为Class A使用!
      

  4.   

    你要实现重用,最好是用泛型吧,把你的修改了下interface face<T>{
      T getItem();
    }class Item{
      int age;
      String name;
    public int getAge() {
    return age;
    }
    public void setAge(int age) {
    this.age = age;
    }
    public String getName() {
    return name;
    }
    public void setName(String name) {
    this.name = name;
    }
      
    }class A implements face<Item>{
      Item Item;
      public Item getItem(){
      return new Item();
      }   
    }//调用的方法
    face<Item> f=new A();
    f.getItem().getName();
      

  5.   

    A里面的方法会被不是public的没有实现接口的方法