Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.01.2013, 23:32   #1
Hemul
Форумчанин
 
Регистрация: 03.10.2010
Сообщений: 321
По умолчанию Совет по наследованию классов

Всем привет. Нужен совет по использованию наследуемых методов. Мне нужно использовать объектный указатель var для всех подклассов Variable и иметь возможность использовать getValue и setValue . (перегрузить метод для разных возвращаемых типов данных) . Как лучше реализовать то, что мне нужно ? Generic - не рассматриваются из-за очень долгой работы с классами Integer и Float .

Код:
for(int i=-2147483647;i<2147483647;i++); //Выполняется за 1.3 секунды
for(Integer i=-2147483647;i<2147483647;i++); //выполняется 12-14 секунд

Код:
class Variable
{
	protected int id =-1;
	
	protected boolean isWritable = true;
	
	public Variable()
	{
		
	}
	
	public void setId(int _id)
	{
		id=_id;
	}
	
	public int getId()
	{
		return id;
	}
	

	public void writable(boolean isW)
	{
		isWritable =isW;
	}
	
	public boolean isWritable()
	{
		return isWritable;
	}

}

class TypeInteger extends Variable
{
	private int value;
	
	public TypeInteger (int _id , int val , boolean isWrit)
	{
		super();
		setId(_id);
		setValue(val);
		writable(isWrit);
	}

	
	public void setValue(int v)
	{
		if(isWritable) value = v;
	}
	
	public int getValue()
	{
		return value;
	}
}
class TypeFloat extends Variable
{
	private float value;
	
	public TypeFloat (int _id , float val , boolean isWrit)
	{
		super();
		setId(_id);
		setValue(val);
		writable(isWrit);
	}
	
	public void setValue(float v)
	{
		if(isWritable) value = v;
	}
	
	public float getValue()
	{
		return value;
	}
}
Код:
Variable var = new TypeInteger(1,13,true);
		var.setValue(15); //Это неправильно
Hemul вне форума Ответить с цитированием
Старый 07.01.2013, 00:51   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Цитата:
Сообщение от Hemul Посмотреть сообщение
Generic - не рассматриваются из-за очень долгой работы с классами Integer и Float .

Код:
for(int i=-2147483647;i<2147483647;i++); //Выполняется за 1.3 секунды
for(Integer i=-2147483647;i<2147483647;i++); //выполняется 12-14 секунд
Чиво? Причём тут дженерик?
В данном куске кода он не только долго выполняется, но и наверняка жрёт бешеное количество памяти. Так просто циклы никто не пишет, потому что обёртки неизменяемы.

В общем тут дженерики, онли дженерики!


Код:
public class Variable<Type extends Number>
{
	private long id;
	private Type innerValue;
	private boolean writable;
	
	
	public Variable(final long id, final Type value, final boolean isWritable)
	{
		this.setId(id);
		this.forceSetValue(value);
		this.setWritable(isWritable);
	}
	
	
	public void setId(final long newId)
	{
		this.id = newId;
	}
	
	public long getId()
	{
		return this.id;
	}
	
	
	public void setWritable(final boolean isWritable)
	{
		this.writable = isWritable;
	}
	
	public boolean getWritable()
	{
		return this.writable;
	}

	
	public void setValue(final Type newValue)
	{
		if (this.writable) this.forceSetValue(newValue);
	}
		
	public Type getValue()
	{
		return this.innerValue;
	}
	
	
	private void forceSetValue(final Type newValue)
	{
		if (newValue == null) throw new NullPointerException();
		
		this.innerValue = newValue;
	}
}

Последний раз редактировалось Carbon; 07.01.2013 в 01:06.
Carbon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вопрос по наследованию denrubun Общие вопросы C/C++ 14 25.12.2012 12:21
Вопрос по множественному наследованию классов с++ GartesK Общие вопросы C/C++ 7 14.11.2011 22:00
задача по наследованию в С++ Евгений1221 Помощь студентам 1 12.05.2011 01:13
Вопрос по наследованию katbka Помощь студентам 0 13.05.2010 18:31