2017-06-10 5 views
-2

大学のプロジェクトのためにソフトウェアのメンテナンスを修正する必要があります。 Kiuwanは、 "Java.lang.Objectを返さず、代わりに特定の型に変換する"という問題を報告しています。多くの方法で、すべての問題を解決するために、ソフトウェアを頭から頭まで再設計する必要があります。 キウワンを迂回してこの問題を「解決」する方法はありますか?私は本当にThinletLayoutInterfaceが何をするか見当がつかないJava.lang.Objectを返すのを避け、特定のタイプに変換する

public Object popupMenu(Object component) { 
    return ThinletLayoutInterface.popupMenu(component, this); 
} 
+2

私はこの問題を理解していません。戻り値の型を返す値に変更しますか? 'public Object popupMenu(Object component)'のすべての部分が何を意味するのか理解していますか?そうでない場合は、それがあなたの質問です(あなたはおそらく、Googleや教科書に頭を向けるべきです)。一方、あなたが望むものに戻り値の型を変更することができない何らかの理由がある場合は、それを詳述し、[mcve]を提供する必要があります。 – Dukeling

+0

Kiuwanアナライザは、「Java.lang.Objectを返さないようにする」という警告を表示します。このため、メンテナンス値が低くなります。今は、私がシステムの再設計にかかるコストがかかるので、一種の返品オブジェクトとして持っているすべてのメソッドのシグネチャを変更することはできません。 ObjectをObjectとまったく同じようなものに置き換えることによってKiuwanを逃れる方法はありますか? – tommy932

+0

オブジェクトの返却を避けるためにシステムを再設計する必要がある場合は、設計し直すべきである可能性の高い設計上のシステムを指します**。いいえ、継承はそれほど機能しません。つまり、すべてのクラスが継承する唯一のクラスです。すべてのタイプのオブジェクトでも機能する別のクラスに置き換えることはできません。 – Dukeling

答えて

0

: これは、修正するための方法の一例です。あなたは絶対にあなたが戻って取得するために何を期待タイプこのメソッドを呼び出すたびにを知っている場合しかし、あなたはいくつかのcheesynessで、カンニングと

public <T> T popupMenu(Class<T> cls, Object component) { 
    return (T) ThinletLayoutInterface.popupMenu(component, this); 
} 

を行い、その後、あなたが知っている例として想定し、このようにそれを呼び出すことができますこの呼び出しはウィジェットを返します。

Widget w = populateMenu(Widget.class, myComponent); 

これは、発信者にタイプセーフの負担をかけるもので、私が言ったように、チートです。

関連する問題