問題タブ [name-clash]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java 名の隠蔽: 難しい方法
解決するのが非常に難しい名前の隠蔽に問題があります。問題を説明する簡略化されたバージョンを次に示します。
クラスがあります:org.A
それからクラスがありますnet.foo.X
そして今、ここに継承しA
て呼び出したい問題のあるクラスがありますnet.foo.X.doSomething()
ご覧のとおり、これは不可能です。X
継承された型によって隠されているため、単純な名前は使用できません。は継承されたフィールドによって隠されているnet.foo.X
ため、完全修飾名は使用できません。net
B
私のコードベースにはクラスだけがあります。クラスnet.foo.X
とクラスorg.A
はライブラリ クラスなので、変更できません。
私の唯一の解決策は次のようになりますX.doSomething()
。しかし、このクラスは名前の衝突のためにのみ存在します。これは非常に面倒です! X.doSomething()
から直接呼び出すことができる解決策はありませんB.doSomething()
か?
global::
C# や::
C++など、グローバル名前空間を指定できる言語では、net
このグローバル プレフィックスを前に付けることもできますが、Java ではそれができません。
java - ジェネリック クラスのメソッドをオーバーライドすると名前が衝突する
次のコードで発生する名前衝突エラーを理解しようとしています。
エラーメッセージ:
エラー: 名前の衝突:
doSomething(Number,Map<String,JComponent>)
inBar
とdoSomething(Number,Map<String,JComponent>)
inFoo
の消去は同じですが、どちらも他方をオーバーライドしません
からジェネリック型を削除するか、宣言を;Foo
に変更することで修正できることはわかっています。私が知りたいのは、特定のケースでこのエラーが発生する理由ですが、各メソッドからパラメーターを削除すると消えることです。タイプ eraserについていくつか読んだことがありますが、ジェネリックの有無にかかわらず両方のメソッドが同じ消去を行う必要があるため、どちらの場合でも有効なオーバーライドになるように見えます。(ジェネリック パラメータをまだどこでも使用していないことに注意してください。そのため、非常に驚いています。)Bar
class Bar extends Foo<Integer>
comps
以前にジェネリック型を親クラスに追加したことは知っていますが、サブクラスに関する警告のみが表示され、エラーは表示されませんでした。誰でもこのシナリオを説明できますか?
c++ - メンバー関数とクラス名の名前の競合
wxWidgets を使用してチェス プログラムを作成しています。ある時点で、私は のサブクラスを持っていて、それは私が書いwxGLCanvas
たクラスを利用しています。Move
残念ながら、 method があるようwxWindowBase::Move()
で、フォームのステートメントはすべてlist<Move> li
コンパイルされません。
これを解決する良い方法はありますか?を試してみましたがlist< ::Move> li
、問題は解決しましたが、ひどいので、どこでも変更する必要があります。名前空間の競合とは異なり、using 宣言はここでは役に立たないようです。
c - プリプロセッサの使い方が間違っていませんか?
注意:これは宿題ではありません。プログラムは完全ではなく、完全には機能しませんが、少なくともコンパイルする必要があります。
私は、C Primer Plus Book を使用して独学でプロセスを進めている最中です (要するに、私は C の初心者です)。私は本全体をほぼ読み終え、各章の練習問題に取り組んでいます。これはそれらの時間の 1 つです。独特の問題に遭遇しましたが、それはプリプロセッサ ディレクティブに関連していると確信しています。
私は MinGW (Windows 用の gcc) を使用しており、次のように報告されます。
gcc が報告するエラーは次のとおりです。
nanfunct.c: 'keywords' の複数の定義
nanite.c: ここで最初に定義された
etc... etc... さらにエラーが発生しました...
これは複数のヘッダー ファイルが含まれていることが原因であると確信していますが、さらに重要なのは、私が作成してインクルードしたヘッダー ファイルがこの問題を引き起こしていることです。
この問題は、まだ事前定義されていない場合にのみ定義するように言っていますが、コンパイル時に複製される文字配列へのポインター (または文字列ベースの配列) にリンクしているようです。
例えば:
私は3つのファイルを使用しています:
nanite.c -> main() の
ソース ファイル nanfunct.c -> 関数
nanproto.h のソース ファイル -> nanite.c および nanfunct.c のヘッダー ファイル
nanite.cとnanfunct.cの中にnanproto.hを#include します
Pastebinに投稿されたソース ファイル:
nanproto.h -> nanite.cおよびnanfunct.cのヘッダー ファイル
nanite.c & nanfunct.c -> ソース ファイル
なぜこうなった?#ifndefは、このようなことが起こらないようにするためのものだと思いましたか?
clojure - Incanter と Clojure Soup を一緒に使う
私はClojureを学んでいます - とても楽しいです! 同じファイルで Incanter と Clojure Soup を使用しようとしています。
そして、次のエラーが表示されます。
理由は理解できたと思いますが、どうすればこの問題を解決できますか? このウェブサイトとそのすべての達人に感謝します!
ありがとう。
python - Django のプロジェクトで同じモデル名
2 つのアプリを含むプロジェクトがあります。
- アカウント、
- クラス。
アカウント アプリでは Django のグループ モデル (アカウントのアクセス許可用) を使用し、クラス アプリではグループという名前の別のモデルを使用しています (ただし、学生のグループとして解釈する必要があります)。
私の url.py は次のようになります。
しかし、期待どおりに機能していません。/api ページは次のようになります。
したがって、どちらも同じアドレスをターゲットにしていますが、これは私が望んでいるものではありません。管理ページはうまく機能します (アカウントのグループとクラスのグループを編集できます)。
助言がありますか?
編集:
以下のようにurl.pyの行の1つを変更します(以下の回答の1つで提案されているように):
/api ページを次のように変更します。
したがって、@argaen ソリューションは通常、この場合のソリューションではありません。