ご挨拶。これは、このサイトでの私の最初の投稿です。
タイプ eraserのため、次のコードがコンパイルされることは期待できないと思いました。実際、以前のバージョンの Eclipse ではコンパイルされませんでした。私の理解では、instanceofは実行時の演算子であり、実行時にコンパイルされるジェネリック型について知ることができませんでした。
public static <E extends Comparable<? super E>>
void SampleForQuestion(E e)
{
if ( !(e instanceof String) )
System.out.println("I am not a String");
else
System.out.println("I am a String");
}
しかし、あなたのスレッドの 1 つに実際にこのようなコードが回答に含まれているのを見て驚きました。私の最新の Eclipse (JVM 1.6 rev 20 を搭載した Windows 上の Galileo) はそれに完全に満足しており、それも機能します。(誰かがEclipseでは動作したが、そのスレッドの別のIDE / JDKでは動作しないと言ったことに気付きましたが、詳細は覚えていません。)
誰かがそれが機能する理由を説明できますか?さらに重要なことは、将来的に機能することが期待されるかどうか、学生を指導する必要があるためです.
ありがとうございました。(コードの書式設定が正しく行われることを願っています。私の観点からは正しくインデントされているように見え、タブはありません。)