Сначала извиняюсь, если я использую неправильный термин, выбрав слово "семантика".
Я большой поклонник дженериков в Java по всем очевидным причинам. Это очень помогает мне, когда я работаю с огромным количеством нечетных битов кода, и мне часто приходится возвращаться к старым вещам. Сегодня я столкнулся с ошибкой классической ошибки, которую я, вероятно, не написал бы в предродовые дни, - они сделали меня немного ленивым.
Я хотел бы знать, есть ли языковая функция, либо на Java, либо, возможно, как аналогичная концепция на других языках, которая берет на себя безопасность типов дженериков и расширяет ее до своего рода семантической безопасности. В частности, я хочу помочь избежать ошибок, возникающих из-за неправильной установки.
Простой пример:
Map<String, String> myMap = new HashMap<String, String>();
String myKey = "key";
String myVal = "value";
myMap.put(myVal, myKey);
Какой компилятор не поймает. Я мог бы subclass сделать обертками, чтобы дать мне тип String
Key
и тип Value
, я полагаю. Я могу назвать свои переменные, чтобы указать их использование (как я сделал в этом примере). Что еще?
Итак, мои вопросы:
- из академического интереса, что называется этой концепцией и какие языки имеют эту функцию?
- В отсутствие какой-либо такой языковой функции, каковы наилучшие методы, чтобы избежать такой ошибки?
Спасибо