0

アドレスと電話番号を含む Eclipse の連絡先マネージャー プロジェクトに取り組んでいます。1 つを (この場合はツリー ノードに) 追加するメソッドは、変数とメソッドが Address ではなく Phone であることを除いて、他のメソッドとほとんど同じです。たとえば、getPhoneIterator() は getAddressIterator() になります。段落全体を強調表示し、「ADDRESS」という文字が一緒に表示されるすべての場所を「PHONE」という文字に変更する方法を探しています。

それを行う方法はありますか?

説明のために、これが私のコードです。

// Checking if there are addresses, and 
// then checking and adding them one by one to the tree.
if (!currentContact.addressCollectionIsEmpty()){ //If there are addresses...
    addressMainNode = new DefaultMutableTreeNode("Addresses");
    Iterator<Address> addressItr = currentContact.getAddressIterator();
    while(addressItr.hasNext()){
        Address currentAddress = addressItr.next();
        addressSpecificNode = 
            new DefaultMutableTreeNode(currentAddress.toString());
        addressMainNode.add(addressSpecificNode);
    }
    contactNode.add(addressMainNode);
}
4

1 に答える 1

1
if (!currentContact.addressCollectionIsEmpty())
{
    addressMainNode = new DefaultMutableTreeNode("Addresses");
    Iterator<Address> addressItr = currentContact.getAddressIterator();
    while(addressItr.hasNext()){
        Address currentAddress = addressItr.next();
        addressSpecificNode = 
            new DefaultMutableTreeNode(currentAddress.toString());
        addressMainNode.add(addressSpecificNode);
    }
    contactNode.add(addressMainNode);
}

コードの上記の部分は、次のようにジェネリック メソッドに移動できます。

public <T> addToContactNode(
    boolean isEmpty,
    String treeNodeName,
    Iterator<T> itr) 
{
    if (isEmpty) {
        return;
    }
    mainNode = new DefaultMutableTreeNode(treeNodeName);
    while(itr.hasNext()){
        T current = itr.next();
        specificNode = 
            new DefaultMutableTreeNode(current.toString());
        mainNode.add(addressSpecificNode);
    }
    contactNode.add(mainNode);
}

そして、上記のメソッドは次のように呼び出されます。

// Add addresses.
addToContactNode(
    currentContact.addressCollectionIsEmpty(),
    "Addresses",
    currentContact.getAddressIterator());

// Add Phones.
addToContactNode(
    currentContact.phoneCollectionIsEmpty(),
    "Phones",
    currentContact.getPhoneIterator());
于 2012-12-07T03:11:30.303 に答える