2016-05-29 5 views
0

ForSalePropertyオブジェクトまたはRentalPropertyオブジェクトのいずれかを格納しているオブジェクトのArrayListがあります。arraylistオブジェクトからのアクセス方法

static ArrayList<Object> obj = new ArrayList<Object>(); 

マイRentalPropertyとForSalePropertyは

RentalProperty extends Property 
ForSaleProperty extends Property 

内部プロパティ、私は住所とViewingArrangementオブジェクトを持つプロパティのサブクラスです。

ViewingArrangementでは、ContactPersonオブジェクトに文字列openTime変数があります。また、ViewingArrangementにsetOpenTimeメソッドがあります。

問題:

どのように私はViewingArrangementでsetOpenTime()メソッドにアクセスします。私のオブジェクトのArrayListで

、私はこの

RentalProperty rp1 = new RentalProperty(1500,"6-Jun-16"); 
Address a1 = new Address(150,"Tampines Ave 5","Singapore",6002); 
ContactPerson cp1 = new ContactPerson("Benjamin","Murdoch",2738482); 
ViewingArrangement va1 = new ViewingArrangement(cp1,"1000H"); 
rp1.setAddress(a1); 
rp1.setVA(va1); 

obj.add(rp1); 

はだから今、私はRP1のOPENTIMEを変更する必要があります。

私は以下を試みましたが、私のオブジェクトのメソッドにアクセスできません。

static void editOpenTime() 
{ 
    int input; 
    String newOpenTime; 
    listProperty(); 
    Scanner in = new Scanner(System.in); 
    System.out.println("Enter property number : "); 
    input = in.nextInt(); in.nextLine(); 
    System.out.println("Enter new open time for property # : "+input); 
    newOpenTime = in.nextLine(); 

    obj.get(input). 

} 
+0

は、私はカントメソッドのリストに思えます。メソッドを静的にする必要はありますか? public void setTime(String time) { this.time = time; } –

答えて

0

まず可能な場合は型の安全性のためのオブジェクトではないタイプを使用することをお勧めします。あなたのケースでは両方とも拡張されているのでPropertyを使用してください。

static ArrayList<Property> properties = new ArrayList<Property>(); 

その後、あなたはVAが好き得ることができ、次のとおりです。

ViewingArrangement va = properties.get(input).getVA(); 
va.setOpenTime() 
+0

ありがとうございます!出来た! –

関連する問題