1

コードで次のコンパイル エラーが発生しました。

メソッド add(UComponent comp, KopiAlignment constraint); DBlock 型に対してあいまいです ...

既存のクラス DBlock を抽象化する Ublock インターフェイスを作成したい

コードは次のとおりです。

インターフェイス Ublock :

public interface UBlock extends UComponent, BlockListener {
   public void add(UComponent comp, KopiAlignment constraints);
}

クラス DBlock :

public class DBlock extends JPanel implements  UBlock {
    public void add(UComponent comp, KopiAlignment constraints) {
    } 
}

別のクラスで add メソッドを呼び出します。

private DBlock blockView;

blockView.add(displays[i], new KopiAlignment(chartPos + leftOffset, i + 1, 1, false));

DBlock から UBlock の実装を削除すると、エラーはもう存在しません。呼び出されたメソッドは次のとおりです。

/**
 * Adds the specified component to the end of this container.
 * Also notifies the layout manager to add the component to 
 * this container's layout using the specified constraints object.
 * This is a convenience method for {@link #addImpl}.
 * <p>
 * Note: If a component has been added to a container that
 * has been displayed, <code>validate</code> must be
 * called on that container to display the new component.
 * If multiple components are being added, you can improve
 * efficiency by calling <code>validate</code> only once,
 * after all the components have been added.
 *
 * @param     comp the component to be added
 * @param     constraints an object expressing 
 *                  layout contraints for this component
 * @exception NullPointerException if {@code comp} is {@code null}
 * @see #addImpl
 * @see #validate
 * @see javax.swing.JComponent#revalidate()
 * @see       LayoutManager
 * @since     JDK1.1
 */
public void add(Component comp, Object constraints) {
    addImpl(comp, constraints, -1);
}

では、どうすればこの問題を解決できますか?

4

1 に答える 1

1

add問題は、他のメソッドを継承することです。これは、DBlockクラスに両方があることを意味します

public void add(UComponent comp, KopiAlignment constraints)

public void add(Component comp, Object constraints)

あなたの処分で。

KopiAlignmentは のサブタイプでObjectあり、 は のサブタイプであると推測しUComponentていComponentます。これは、addwithUComponentおよびKopiAlignmentas パラメーターを呼び出す場合、正式には異なるシグネチャーを持っていますが、パラメーターの型は両方のメソッドに適合することを意味します。

私の知る限り、これを修正する実際の方法はありません。

于 2013-09-27T14:11:32.133 に答える