問題タブ [type-safety]

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.

0 投票する
1 に答える
9657 参照

java - 特定の Java ジェネリクス キャストでのタイプ セーフ警告の意味は何ですか?

Java 警告の意味は何ですか?

型の安全性: Object から List<Integer> へのキャストは、実際には消去された型 List に対してチェックしています

次のコードのように、オブジェクトを一般的な情報を持つ型にキャストしようとすると、この警告が表示されます。

0 投票する
14 に答える
76305 参照

c# - C# では、リストを作成できないのはなぜですか?オブジェクトはリストに格納されます variable

It seems that a List object cannot be stored in a List variable in C#, and can't even be explicitly cast that way.

List<string> sl = new List<str

It seems that a List object cannot be stored in a List variable in C#, and can't even be explicitly cast that way.

results in Cannot implicitly convert type System.Collections.Generic.List<string> to System.Collections.Generic.List<object>

And then...

results in Cannot convert type System.Collections.Generic.List<string> to System.Collections.Generic.List<object>

Of course, you can do it by pulling everything out of the string list and putting it back in one at a time, but it is a rather convoluted solution.


I'm personally not very big a fan of such puzzle questions, I prefer actual programming exercises in interviews.

That said, first it would depend on if I can tell if they are broken or not from the floor I am dropping them at. I will presume I can.

I would go up to the second floor, drop the first marble. If it broke I would try the first floor. If that broke I would know it was no floor.

If the first didn't break, I would go to the 4th floor and drop from there. If that broke, I would go back down and get the other marble, then drop at the 3rd floor, breaking or not I would know which is the limit.

If neither broke, I would go get both, and do the same process, this time starting at the 6th floor.

This way, I can skip every other floor until I get a marble that breaks.

This would be optimized for if the marble breaks early... I suppose there is probably an optimal amount of floors I could skip to get the most for each skip... but then if one breaks, I would have to check each floor individually from the first floor above the last known floor... which of course would be a pain if I skipped too many floors (sorry, not going to figure out the optimal solution right now).

Ideally, I would want a whole bag of marbles, then I could use a binary search algorithm and divide the number of floors in half with each drop... but then, that wasn't the question, was it?

0 投票する
11 に答える
152414 参照

c# - ジェネリック型変換 FROM 文字列

別のクラスの「プロパティ」を格納するために使用したいクラスがあります。これらのプロパティには、単に名前と値があります。理想的には、型指定されたプロパティを追加できるようにして、返される「値」が常に希望する型になるようにすることです。

型は常にプリミティブでなければなりません。このクラスは、基本的に名前と値を文字列として格納する抽象クラスをサブクラス化します。このサブクラスは、基本クラスにいくつかの型安全性を追加するという考えです (また、いくつかの変換で私を節約します)。

だから、私は(おおよそ)これであるクラスを作成しました:

質問は次のとおりです。

文字列からプリミティブに戻す「一般的な」方法はありますか?

全体的に変換をリンクする一般的なインターフェイスを見つけることができないようです ( ITryParsableのようなものが理想的でした!)。

0 投票する
8 に答える
29356 参照

c# - ジェネリック型チェック

プリミティブに渡される型を強制/制限する方法はありますか? (bool、int、string など)

これで、ジェネリック型パラメーターをwhere句を介して型またはインターフェイスの実装に制限できることがわかりました。ただし、これはプリミティブ (AFAIK) の法案には適合しません。なぜなら、それらはすべて共通の基盤を持っているわけではないからです (誰かが言う前のオブジェクトは別として!:P)。

したがって、私の現在の考えは、歯を食いしばって大きなswitchステートメントを実行し、失敗時にArgumentExceptionをスローすることです。


編集1:

明確にするために:

コード定義は次のようになります。

そしてインスタンス化:


編集2

@Jon Limjap - 良い点、そして私がすでに考えていたこと。型が値型か参照型かを判断するために使用できる汎用メソッドがあると確信しています。

これは、処理したくない多くのオブジェクトを即座に削除するのに役立ちます (ただし、Sizeなどの使用される構造体について心配する必要があります)。興味深い問題はありませんか?:)

ここにあります:

MSDNから取得。


私は興味がある。これは、拡張メソッドを使用して .NET 3.x で実行できますか? インターフェイスを作成し、そのインターフェイスを拡張メソッドに実装します (これはおそらく少し太ったスイッチよりもクリーンです)。さらに、後で軽量のカスタム型に拡張する必要がある場合は、基本コードを変更する必要なく、同じインターフェイスを実装することもできます。

皆さんはどう思いますか?

悲しいニュースは、私は Framework 2 で作業していることです!! :D


編集3

これは、Jon Limjaps Pointerに続くとてもシンプルなものでした。とてもシンプルで泣きそうになりましたが、コードが魔法のように機能するので素晴らしいです!

それで、これが私がやったことです(あなたは笑うでしょう!):

ジェネリック クラスに追加されたコード

次に、型をチェックして例外をスローするためのちょっとしたユーティリティ メソッド、

あとは、クラス コンストラクターでEnforcePrimitiveType()を呼び出すだけです。仕事終わり!:-)

唯一の欠点は、設計時ではなく実行時 (明らかに) にのみ例外をスローすることです。しかし、それは大したことではなく、 FxCopのようなユーティリティ(職場では使用していません) で解決できます。

これについて Jon Limjap に感謝します!

0 投票する
3 に答える
40579 参照

c++ - テンプレートの typedef - 回避策は何ですか?

C++ 0x にはテンプレート エイリアスがあります (テンプレート typedef と呼ばれることもあります)。ここを参照してください。C++ の現在の仕様にはありません。

回避策として何を使用しますか? コンテナ オブジェクトまたはマクロ ? その価値はありますか?

0 投票する
7 に答える
480 参照

php - PHP で間違った型を使用しないようにするにはどうすればよいですか?

ご存知のように、PHP は非常にルーズに型付けされています。この言語では、関数パラメーターまたはクラス変数の型を指定する必要はありません。これは強力な機能です。

ただし、スクリプトのデバッグが苦痛になる場合もあります。たとえば、ある種類のオブジェクトを別の種類のオブジェクトを予期するメソッドに渡すと、渡されたオブジェクトに対して特定の変数/メソッドが存在しないというエラー メッセージが生成される可能性があります。これらの状況はほとんど迷惑です。より厄介な問題は、1 つのオブジェクトを間違ったクラスのオブジェクトで初期化した場合です。その「間違ったオブジェクト」は、スクリプトの実行の後半まで使用されません。この場合、元の引数を渡したときよりもずっと後にエラーが発生します。

渡したものが特定のメソッドや変数を持っていないと不平を言ったり、渡されたオブジェクトが使用されるのをスクリプト実行のずっと後まで待ったりする代わりに、オブジェクトを指定した正確な場所でエラーメッセージを表示したいと思います。オブジェクトの型が正しくない、または互換性がないことを訴えます。

コードでこれらの状況をどのように処理しますか? 互換性のない型をどのように検出しますか? エラー メッセージをより簡単に理解できるように、スクリプトに型チェックを導入するにはどうすればよいですか?

また、Php で継承を考慮しながら、これらすべてをどのように行うことができますか? 検討:

次に、このコードのユーザーは、独自の具象クラスを使用してインターフェイスを実装します。

ConcreteClass インスタンスと、将来のすべての不明なユーザー定義オブジェクトも、SetObject で受け入れられるようにしたいと考えています。正しいタイプをチェックする際にこれをどのように許可しますか?

0 投票する
11 に答える
26729 参照

design-patterns - C++ でどの Typesafe Enum を使用していますか?

C++ の組み込み列挙型がタイプセーフでないことはよく知られています。タイプセーフな列挙型を実装するクラスがどこで使用されているのか疑問に思っていました...私自身は次の「自転車」を使用していますが、やや冗長で制限があります。

typesafenum.h:

typesafenum.cpp:

使用法:

追加: 要件についてもっと具体的であるべきだったと思います。私はそれらを要約しようとします:

優先度 1: enum 変数を無効な値に設定することは、例外なく不可能 (コンパイル時エラー) であるべきです。

優先度 2: enum 値と int の間の変換は、単一の明示的な関数/メソッド呼び出しで可能にする必要があります。

優先度 3: 可能な限りコンパクトでエレガントで便利な宣言と使用法

優先度 4: enum 値と文字列との変換。

優先度 5: (あると便利) enum 値を反復処理できる可能性。

0 投票する
2 に答える
6042 参照

xsd - JAXB - XJC - 生成されたタイプセーフな列挙型クラスとメンバーに影響を与える

次の simpleType を XJC コンパイル (JAXB パッケージから) でコンパイルすると...

私はJavaで次の列挙型になります(インポートステートメントとコメントは削除されました)

これはまさに私が欲しいものです...public String value()メソッドを除いて。public String getValue()このメソッドは、Sun の命名規則に従って呼び出されることを期待しています。そうすれば、EL を使用して JSP ページで簡単に使用できます。今、私はそれを回避する必要があります。

getValue()メソッドの代わりにメソッドを使用して、XJC コンパイルをより便利な列挙にさらに微調整した経験がある人はいますvalue()か? または、メソッドなどを追加できますか?

PS これは JAXB の v2.0.3 で発生しました。最新バージョンv2.1.8をダウンロードしましたが、同じです...

0 投票する
12 に答える
127136 参照

language-agnostic - タイプセーフとは?

「タイプセーフ」とはどういう意味ですか?

0 投票する
10 に答える
439146 参照

java - 型の安全性: 未チェックのキャスト

春のアプリケーション コンテキスト ファイルには、次のようなものがあります。

Java クラスでは、実装は次のようになります。

Eclipse で、次のような警告が表示されます。

型の安全性: Object から HashMap<String,String> へのチェックされていないキャスト

何が悪かったのか?