Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.java.programmer > #17169
| From | "Donkey Hottie" <donkey.hottie@1:261/38.remove-5qr-this> |
|---|---|
| Subject | Re: Type of a generic class? |
| Message-ID | <501D6355.56128.calajapr@time.synchro.net> (permalink) |
| Newsgroups | comp.lang.java.programmer |
| References | <501C1560.56003.calajapr@time.synchro.net> |
| Date | 2012-08-04 18:41 +0000 |
| Organization | tds.net |
To: Donkey Hottie
From: Donkey Hottie <donkey@fredriksson.dy.fi>
02.08.2012 22:04, Donkey Hottie kirjoitti:
>
> I have this class called Global. It is trying to be a simplistic
> simulation of global as in MUMPS/M language. It is a persistent
> variable, that is accessible everywhere, and retains it's value over
> time. I store them in a database.
Actually I renamed this to a SystemProperty, and will implement the Global<T
extends java.io.Serializable> later. It will act just like MUMPS Global and
does not need any clutterin oddities. Any serializable objects just serialized
to a BLOB.
I have a separate use case for that too.
public class Global<T extends java.io.Serializable> {
private static final Log LOG = LogFactoryUtil.getLog(Global.class);
final String name;
final Connection conn;
public Global(String name, Connection conn)
{
this.name = name;
this.conn = conn;
}
public T get() throws Exception
{
T rc = null;
LOG.info(String.format("Returning Global value %s=%s ",
this.name, String.valueOf(rc)));
throw new Exception("Not yet implemented!");
}
public void set(T value) throws Exception
{
LOG.info(String.format("Setting Global value %s=%s ",
this.name, String.valueOf(value)));
throw new Exception("Not yet implemented!");
}
}
>
> First problem I have is to translate the type to a lower level
> application API call. I can not leave the cast or type conversion to
> compiler only.
>
> For that I figured out that I may need a variable of Class<T>, I'm using
> the variables isAssignableFrom(Class) to find out the correct API call.
> Could there be a simpler way?
>
> the final Class<T> as a member variable. Is that really needed? How
> could I use some typeinfo (reflection API?) instead?
>
> If I could use serialization and store the objects that way maybe into
> BLOBs there would not be problems, but currently I can not do that.
>
> I would like to get rid of that "klass" argument for the Global<T>. Any
> ideas?
>
> Class is a simple version containg only the important parts.
>
> public class Global<T extends Object>
> {
> final String name ;
> final Connection conn ;
> final Class<T> klass;
> public Global(String name, Connection conn, Class<T> klass)
> {
> this.name = name ;
> this.conn = conn ;
> this.klass = klass;
> }
>
> @SuppressWarnings("unchecked")
> public T get() throws Exception
> {
> T rc = null;
> if (klass.isAssignableFrom(Boolean.class))
> {
> rc = (T)SystemProperties.getSystemBoolean(name, conn);
> }
> else if(klass.isAssignableFrom(Date.class))
> {
> rc = (T)SystemProperties.getSystemDate(name, conn);
> }
> else if (klass.isAssignableFrom(Long.class))
> {
> rc = (T)SystemProperties.getSystemLong(name, conn);
> }
> else if (klass.isAssignableFrom(Integer.class))
> {
> rc = (T)SystemProperties.getSystemInt(name, conn);
> }
> else if (klass.isAssignableFrom(String.class))
> {
> rc = (T)SystemProperties.getSystemString(name, conn);
> }
> return rc ;
> }
> }
>
--- BBBS/Li6 v4.10 Dada-1
* Origin: Prism bbs (1:261/38)
--- Synchronet 3.16a-Win32 NewsLink 1.98
Time Warp of the Future BBS - telnet://time.synchro.net:24
Back to comp.lang.java.programmer | Previous | Next — Previous in thread | Find similar | Unroll thread
Type of a generic class? "Donkey Hottie" <donkey.hottie@1:261/38.remove-yy0-this> - 2012-08-03 18:54 +0000
Re: Type of a generic class? "Lew" <lew@1:261/38.remove-yy0-this> - 2012-08-03 18:54 +0000
Re: Type of a generic class? "markspace" <markspace@1:261/38.remove-yy0-this> - 2012-08-03 18:54 +0000
Re: Type of a generic class? "Donkey Hottie" <donkey.hottie@1:261/38.remove-yy0-this> - 2012-08-03 18:54 +0000
Re: Type of a generic class? "Lew" <lew@1:261/38.remove-yy0-this> - 2012-08-03 18:54 +0000
Re: Type of a generic class? "markspace" <markspace@1:261/38.remove-yy0-this> - 2012-08-03 18:54 +0000
Re: Type of a generic class? "Donkey Hottie" <donkey.hottie@1:261/38.remove-yy0-this> - 2012-08-03 18:54 +0000
Re: Type of a generic class? "Donkey Hottie" <donkey.hottie@1:261/38.remove-5qr-this> - 2012-08-04 18:41 +0000
csiph-web