Различие сводится к проектному решению Microsoft и Sun.
Дженерики в Java реализованы до стирание типа компилятором, что означает, что проверка типа происходит во время компиляции, и информация о типе удалена. Этот подход был проявлен для хранения унаследованного кода совместимым с новым кодом с помощью дженериков:
Из Учебных руководств по Java, Дженерики: Введите Стирание :
, Когда универсальный тип инстанцируют, компилятор переводит те типы техникой, названной стиранием типа — процесс, куда компилятор удаляет всю информацию, связанную с параметрами типа и аргументами типа в классе или методе. Стирание типа включает JAVA-приложения, которые используют дженерики для поддержания совместимости на уровне двоичных кодов с библиотеками Java и приложениями, которые были созданы перед дженериками.
Однако с дженерики в C# (.NET) , нет никакого стирания типа компилятором, и проверки типа выполнены во время времени выполнения. Это обладает его преимуществами, что информация о типе сохраняется в скомпилированном коде.
Из Википедии:
Это проектное решение усилено для обеспечения дополнительной функциональности, такой как разрешение отражения с сохранением универсальных типов, а также облегчением некоторых ограничений стирания (таких как неспособность создать универсальные массивы). Это также означает, что нет никакого хита производительности из бросков во время выполнения и обычно дорогих преобразований упаковки.
Вместо того, чтобы говорить "дженерики.NET лучше, чем дженерики Java", нужно изучить различие в подходе для реализации дженериков. В Java кажется, что сохранение совместимости было высоким приоритетом, в то время как в.NET (когда представлено в версии 2.0), понимание полного преимущества использования дженериков было более высоким приоритетом.
Вот пример того, как вы можете включить специфичный для IE6 CSS, чтобы переопределить определенные классы CSS для IE 6 или ниже:
<link rel="stylesheet" type="text/css" href="/css/screen.css" title="MySiteStyle" media="screen" />
<!--[if lte IE 6]>
<link rel="stylesheet" type="text/css" href="/css/screen-ie6.css" title="MySiteStyle" media="screen" />
<![endif]-->
В качестве альтернативы вы можете сделать это для каждого элемента следующим образом:
<!--[if (!IE) | (gt IE 6)]>
<div class="header">
<![endif]-->
<!--[if lte IE 6]>
<div class="ie6_header">
<![endif]-->
MSDN содержит дополнительные сведения о поддержке условных комментариев IE .
Что ж, вы можете использовать javascript для обнаружения браузера и применения класса на его основе. Например, см .:
Вы можете до некоторой степени использовать выражения CSS.
См. http://gadgetopia.com/post/2774 для некоторых примеров. Они не обходятся без условных атрибутов CSS как таковых, но они позволяют динамически изменять значения атрибутов CSS.
Вы можете использовать условные комментарии :
<!--[if lt IE 7]>
<style>
/*your style for IE <=6*/
</style>
<![endif]-->
<![if !IE | (gte IE 7)]>
<style>
/*your style for other browsers*/
</style>
<![endif]>
Я считаю, что это самое чистое решение для такого рода вещей.
в подсказке jQuery проверьте этот плагин: http://jquery.thewikies.com/browser/
плагин, делающий то, что предлагает ghills, это хороший чистый способ.
Следующая страница покажет вам 6 хаков CSS специально для IE7. Вам не следует их использовать, но это самый простой способ придать вашему сайту идеальный вид.