問題タブ [reification]
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 - 実行時に決定されるクラスへのキャスト
ビジネス オブジェクトfetchObjects(String)
の配列を返すメソッドがあります。Contract
パラメータは、className
返すべきビジネスオブジェクトの種類を教えてくれます (もちろん、これはContract
s を返すと言ったので、この解釈されたケースでは意味がありませんが、基本的には実際のシナリオでの状況です)。そこで、どこかからエントリのセットを取得し、コレクションのエントリのクラスをロードします (そのタイプは で指定されますclassName
)。
ここで、返す配列を作成する必要があるため、Set
のtoArray(T[])
メソッドを使用します。リフレクションを使用して、空の Contracts 配列を作成します。しかし、これは私に static 型の値を与えますObject
! 次に、適切な型にキャストする必要があります。この場合はContract[]
(下のリストの「アスタリスクの下線」の部分を参照)。
私の質問は次のとおりです。Contract[]
リストで行っているようにキャストする方法と方法はありますが、配列要素 ( ) の型Contract
className
を(または)のみentriesType
で決定しますか? 言い換えれば、私がやりたいことは、基本的に次のようにキャストすること(entriesType[]) valueWithStaticTypeObject
です。classname
Contract
これはどういうわけか本質的に不可能ですか、それとも何とかできるのでしょうか? たぶんジェネリックを使用していますか?
ありがとう。
更新: CodeIdol
toArray
から取得したタイプセーフなメソッドを使用して、メソッドを次のように更新しました。fetchObjects
コメントで引用されているコンパイラ エラーを取り除くにはどうすればよいですか? これが機能するように、メソッドSet<Contract>
の戻り値の型を絶対に指定する必要がありますか? getEntrySet
ご指摘ありがとうございます。
database - バージョン管理された RDF ストア
これを言い換えてみます:
次の機能を備えた堅牢な RDF ストアまたはライブラリを探しています。
- 名前付きグラフ、または具体化の他の形式。
- バージョン追跡(おそらく名前付きグラフ レベル)。
- 名前付きグラフまたはトリプル レベルでの、ユーザー グループ間のプライバシー。
- TriGパーサーやシリアライザーなど、人間が読み取れるデータの入出力。
私はJena、Sesame、Boca、RDFLib、Redland、および他の 1 つまたは 2 つとしばらく前に遊んだことがありますが、それぞれに問題がありました。最近、上記の領域で改善されましたか? 私がやりたいことが他にできるでしょうか、それとも RDF はまだプライムタイムの準備ができていませんか?
この件についてもう少し読んでみると、次のことがわかりました。
- イエナ、それ以上
- ごま、それ以上
- Bocaはもはや保守されていないようで、実際には DB2 用にのみ設計されているようです。オープンソースのフォークであるOpenAnzoは、より有望なようです。
- RDFLib、それ以上はありません
- レッドランド、それ以上
- Talis Platformは変更セットをサポートしているように見えますが ( Kniblet チュートリアル パート 5のwiki ページとリファレンス)、ホストのみのサービスです。それでも調べるかもしれません。
- SemVersionは有望に思えますが、古くなっているようです。
java - Reifiedジェネリックとは何ですか? Type Erasure の問題をどのように解決し、大きな変更なしに追加できないのはなぜですか?
この件に関するNeal Gafter のブログを読みましたが、まだ多くの点で不明です。
Java、JVM、および既存のコレクション API の現在の状態で、型情報を保持するコレクション API の実装を作成できないのはなぜですか? これらは、後方互換性が維持される方法で、Java の将来のバージョンの既存の実装を置き換えることができませんか?
例として:
REIList は次のようなものです。
メソッドは Object o と Class klass を使用して型情報を取得します。
汎用クラス情報を保持するには、JVM 実装の変更だけでなく、言語の変更が必要になるのはなぜですか?
私は何を理解していませんか?
rdf - RDF での具体化の簡単な例
RDF での具象化の簡単な例を教えてくれる人はいますか? 正しく理解しているかどうかを確認したい。
たとえば、次のケースを提案します。
具体化の有無にかかわらず(つまり、具体化を必要としない単純な RDF ステートメントとして)どのように記述しますか?
java - Java が具体化されたジェネリックを持っていないことを気にする必要があるのはなぜですか?
これは、候補者が Java 言語に追加されることを望んでいたものとして、最近のインタビューで私が尋ねた質問として出てきました。Java が具体化されたジェネリックを持っていないことは、一般的に苦痛として認識されていますが、プッシュされたとき、候補者は実際に私に、それらがあった場合に達成できたであろう種類のことを教えてくれませんでした。
明らかに、生の型は Java (および安全でないチェック) で許容されるため、ジェネリックを覆してList<Integer>
、(たとえば) 実際にString
s を含む になる可能性があります。型情報が具体化されていれば、これは明らかに不可能になる可能性があります。しかし、これ以上のものがあるに違いありません!
人々は本当にやりたいことの例を投稿できますか?具体化されたジェネリックが利用可能でしたか? つまり、実行時に a の型を取得できることは明らかですが、List
それをどうするのでしょうか?
編集:回答は主にパラメータとして a を渡す必要性について懸念しているように見えるため、これを簡単に更新しClass
ます(たとえば、EnumSet.noneOf(TimeUnit.class)
)。これが不可能な線に沿って何かをもっと探していました。例えば:
java - Java で具体化されたジェネリックについて何か言葉はありますか?
この質問は、おそらく具体的な回答よりも多くの議論を引き起こすことを私は知っています (私はそれが好ましくないことを知っています)。しかし、Oracle による最近の買収により、Java が (いつか) ジェネリックを具体化する可能性があるという言葉があったかどうか疑問に思っていました。Oracle が Java を少し強化したいと考えていると聞いたことがありますが、これ以上の方法は思い浮かびません。
c# - C# ジェネリックはプリミティブを持つコレクションにどのように影響しますか
私が理解しているように、C#/.Net ジェネリックはある程度の具体化をサポートしています。したがって、次のコードがあるとします。
値 1 は自動ボックス化されますか、それとも「リスト」オブジェクトはプリミティブ int を効率的に処理しますか?
generics - Scala: ジェネリック型に対するメソッドのオーバーロード
C# では、次の例に示すように、ジェネリック型でメソッドをオーバーロードできます。
ただし、Scala で同じことをしようとすると、コンパイル時エラーが発生しList[Int]
、List[Double]
消去のために同じ型に消去されます。Scala の を使用してこれを回避できると聞きManifest
ましたが、方法がわかりません。ドキュメントにも役立つものは何も見つかりませんでした。
だから私の質問は: Manifest
s (または他の機能するもの) を使用して、消去のために同じ型に消去されるジェネリック型のメソッドをオーバーロードするにはどうすればよいですか?
rdf - 暗黙的な具象化のための単純な形式
ステートメントに関するステートメントを簡単に表現するための暗黙の具体化をサポートする RDF シリアライゼーション形式 ( Notation 3など) はありますか?
たとえば、「メアリーが家を買った」という文があるとします。N3 では次のように表します。
ここで、「ロブから聞いた」など、このステートメントに関するメタステートメントを追加したいとします。
直感的に、次のように記述してこれを表現できるようにしたいと思います。
ただし、これが N3 で「公式に」表現される方法は次のようになると思います。
これは明らかにもう少し複雑で読みにくいです。ステートメントについてのステートメントについてステートメントを作成する必要がある場合は、さらに複雑になります。例: 「ロブが通りを歩いているときに、ロブからこれを聞きました」。
これを RDF シリアライゼーション形式で表現する最も正確で簡単な方法は何でしょうか?
haskell - (機能的?)プログラミングの文脈で「具体化」と「具体化」はどういう意味ですか?
Haskellと関数型プログラミングに関するブログ(特にsigfpeのブログ)でこの用語をよく読んでいますが、それが何を意味するのかわかりません。ほとんどの場合、それを知らなくても大丈夫ですが、知っていれば、テキストをもっとよく理解できたでしょう。Googleは私を助けませんでした。私は技術的なもので迷子になります。
また、世界の非技術的な意味(「抽象的対象を変える」)は、コードで何かを具体化することが実際に何を意味するのかを理解するのに役立ちません。
私はコンピュータサイエンスの概念が少し遅いので、コードを使った実用的な例がいいでしょう。:P