2016-10-25 2 views
0

Я не настолько разбираюсь в программировании, поэтому извините, если это не имеет никакого смысла. В любом случае: существует ли тип данных для типов данных? Это звучит действительно странно, так вот пример того, как можно было бы использовать:Showerthought: Тип данных для dataype?

DataType dt = new DataType("int"); 
dt i = 3; 
double d = 5; 
int castedD = (dt) d; 

т.д.

Eventhough Я уверен, что компилятор (? Или переводчика) делает этот вид синтаксиса невозможно, на мой взгляд, довольно интересная идея. Существует ли подобное? Извините, если это не имеет никакого смысла, мне просто интересно, глупо или глупо. :)

+2

Существует, это называется ['Class'] (http://docs.oracle.com/javase/8/docs/api/java/lang/Class .html); хотя (очевидно) вы не можете делать все, что хотите. –

ответ

2

В Java нет ничего подобного. Вы не можете использовать значение в качестве типа в исходном коде Java:

  • Спецификация Java язык гласит, что имена типов и имена переменных берутся из разных пространств имен. Итак, ваш примерный код на самом деле сообщает компилятору искать класс с именем dt.

  • Если бы это было разрешено, Java больше не будет статически типизированным языком программирования.

Теперь вы можете делать такого рода вещи в Java с помощью отражения, но коды нигде, как элегантно, как ваш (фантазийного) код. Это на порядок (или более) медленнее, чем обычный Java-код, и гораздо более хрупкий, потому что компилятор может предложить вам немного на пути проверки ошибок.


Я не могу думать о любом языке программирования неспециализированные (статический или динамически типов), что позволяет переменные, которые будут использоваться в качестве типов, как это. Прокомментируйте, если вы знаете один ....

Смежные вопросы