|
Основной форум Сюда все проблемы связанные с программированием. |
09.03.2009, 19:41
|
#1
|
AnyKey`щик
Регистрация: 03.03.2009
Сообщений: 18
Написано 3 полезных сообщений (для 4 пользователей)
|
Как создать переменную без типа?
сабж
Как ее создать и присвоить ей значение любого типа/класса
аналог типа variant из делфи
Возможно ли это?
Если нет, то как это реальзавать на яве?
|
(Offline)
|
|
09.03.2009, 20:02
|
#2
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Как создать переменную без типа?
В MP это точно невозможно, в java, на сколько я знаю, тоже.
|
(Offline)
|
|
09.03.2009, 20:45
|
#3
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Как создать переменную без типа?
Я пробовал в вектор совать разные типы. Получилось. Можно засунуть в ячейки одного вектора разные типы. Но чтобы потом извлечь, нужно написать в скобочках круглых тип извлекаемых данных, иначе просто напросто не скомпилируется. То есть ты всё равно должен будешь наперёд знать какой тип данных хранится в данной ячейке.
|
(Offline)
|
|
09.03.2009, 21:10
|
#4
|
|
Ответ: Как создать переменную без типа?
по-идее должен быть указатель без типа, но указатель только указывает на обьект, обьект без типа не может быть
Phantom_wc
ты работал с указателями наверно
|
|
|
09.03.2009, 21:22
|
#5
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Как создать переменную без типа?
jimon, если честно, то я вообще не слышал, что в java есть указатели. Если есть, то вполне возможно, что в векторе они и используются. Я не смотрел как он устроен. Может в Java вообще все операции происходят с указателями? О_о Ждём Пилигрима, он всех рассудит =)
|
(Offline)
|
|
09.03.2009, 21:38
|
#6
|
|
Ответ: Как создать переменную без типа?
Phantom_wc
в паскале точно есть указатели (насчёт midletpascal не знаю)
|
|
|
09.03.2009, 22:33
|
#7
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Как создать переменную без типа?
Сообщение от jimon
Phantom_wc
в паскале точно есть указатели (насчёт midletpascal не знаю)
|
В паскале есть, но в MP нет и сотой доли того, что есть в паскале.
В MP указателей нет, поскольку их нет в j2me(может быть нечто подобное существует на уровне JVM, но в языке указатели не реализованы).
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
10.03.2009, 00:35
|
#8
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Ответ: Как создать переменную без типа?
Все переменные-объекты суть указатели. Просто неявные. В яве все что не static, создается в куче, делайте выводы.
В векторе необязательно знать какой тип хранится в ячейке, достаточно знать возможные варианты и проверять с помощью instanceof
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
10.03.2009, 00:51
|
#9
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Как создать переменную без типа?
instanceof - это метод вектора чтоли? Не слышал о таком.
Добавил позже:
Нашёл в интернете пример. Это вроде как оператор что ли?
if(str instanceof String){ ... }
Как я понял, если str является String, то условие будет TRUE?
Очень интересная вещь. Java продолжает меня удивлять и нравится мне всё больше и больше =)
Последний раз редактировалось Phantom, 10.03.2009 в 01:17.
|
(Offline)
|
|
10.03.2009, 02:20
|
#10
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Как создать переменную без типа?
В java есть способы записи в переменную разные типы данных. Там есть класс под названием Object и от этого класса все типы данных наследут свои свойства. Так что если объявить пременную или массив переменных типа Object, то туда можо записывать информацию любых типов. Класс Vector - это типа расширяемый массив элементов типа Object, так что в векторе можно хранить абсолютно любую информацию.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
10.03.2009, 12:56
|
#11
|
Оператор ЭВМ
Регистрация: 06.11.2008
Сообщений: 26
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Как создать переменную без типа?
вот что нашел в стандартном факе, может быть это подойдет?:
Данная особенность языка позволяет создавать собственные типы данных, являющиеся совокупностью других типов. Например, если вы пишете игру, где игрок управляет персонажем на экране, вы вполне можете использовать комбинированный тип для описания позиции, здоровья и прочих параметров персонажа:
type heroType = record
positionX, positionY: integer;
health: integer;
end;
Чтобы создать переменную свежезаданного типа, используйте обычную формулировку в секции 'var':
var hero: heroType;
Также вы можете использовать созданный тип в качестве параметра, при описании процедур и функций:
function isHeroDead(hero: heroType): boolean;
begin
if (hero.health <= 0) then
isHeroDead := true;
else
isHeroDead := false;
end;
Новый тип может быть определен непосредственно в секции 'var':
var hero: record
positionX, positionY: integer;
health: integer;
end;
Чтобы получить доступ к отдельным элементам комбинированного типа, используйте оператор "." (точка):
...
{ передвигаем персонажа вправо }
hero.positionX := hero.positionX + 1;
...
Нельзя копировать впрямую из переменной в переменную данного типа:
var
a, b: record
x: integer;
end;
begin
...
a := b; { это - неправильно }
...
a.x := b.x; { нужно копировать каждый элемент комбинированного типа }
end.
|
(Offline)
|
|
10.03.2009, 12:59
|
#12
|
Оператор ЭВМ
Регистрация: 06.11.2008
Сообщений: 26
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Как создать переменную без типа?
И если это правльно, то обьясните мне что это за тип? И пример если можно, а то я не понял.
|
(Offline)
|
|
10.03.2009, 13:50
|
#13
|
Злобный Админ
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений (для 9,330 пользователей)
|
Ответ: Как создать переменную без типа?
я не перечитывал всё, поэтому мож не в теме, но во многих языках есть базовый тип переменных.
Например: object в С# и BlitzMAX, Variant в Delphy и Visual Basic...
Переменная этого базового типа может хранить в себе значение любого типа данных (по сути это ссылка на оригинальный объект определённого типа).
Однако перед использованием данные из этой переменной надо извлечь... с помощью каста или спец функции или метода класса.
__________________
|
(Offline)
|
|
10.03.2009, 16:05
|
#14
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Ответ: Как создать переменную без типа?
То что описал gost6681 преобразуется в классы без методов, только с полями.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:50.
|