2016-12-15 31 views
-4

這是一個通用類泛型類

public class Samplevehicle <t > 
{ 

    public void type(t obj) 
    { 

     if(obj instanceof Vechicle) 
     { 

      System.out.println("BIke or truck"); 
     } 
     else if(obj instanceof Bike) 
     { 

      System.out.println("BIKE"); 
     } 
     else if(obj instanceof Truck) 
     { 
      System.out.println("Truck"); 
     } 
    } 

} 

//超

public class Vechicle { 


    public static void main(String[] args) { 

     System.out.println("TYPES"); 
     Samplevehicle<Vechicle>sv=new Samplevehicle<Vechicle>(); 

     sv.type(new Vechicle()); 

     Samplevehicle<Truck>t=new Samplevehicle<Truck>(); 
     t.type(new Truck()); 

     Samplevehicle<Bike>b=new Samplevehicle<Bike>(); 
     b.type(new Bike(1)); 


    } 

} 

//子類

public class Bike extends Vechicle 

{ 
    public Bike(int id) { 

    } 
} 

//第二subcl屁股

public class Truck extends Vechicle 
{ 


    *//truck extending vechicle* 

} 

//即使IM通過其子類顯示超 對象的對象

+5

你會想問一個實際的,具體的和可回答的問題 –

+0

你是什麼意思的「通用」? –

回答

1

刪除else S:

if(obj instanceof Vechicle) 
{ 

    System.out.println("BIke or truck"); 
} 
if(obj instanceof Bike) 
{ 

    System.out.println("BIKE"); 
} 
if(obj instanceof Truck) 
{ 
    System.out.println("Truck"); 
} 

既然這樣,你檢查是否obj不是instanceof Vehicle但是instanceof Bike,這是不可能的。

0

你的問題不清楚。我覺得你正試圖打印對象是否屬於特定的類(或)。如果是這種情況,請使用getClass()而不是instanceof(對象是同一個類和所有其他超類的實例,以及它實現的接口)。嘗試使用getClass()來獲得特定的結果。

public void type(t obj) 
     { 

      if(obj.getClass().equals(Vechicle.class)) 
      { 

       System.out.println("BIke or truck"); 
      } 
      else if(obj.getClass().equals(Bike.class)) 
      { 

       System.out.println("BIKE"); 
      } 
      else if(obj.getClass().equals(Truck.class)) 
      { 
       System.out.println("Truck"); 
      } 
     }