Have you checked out Scala? They have several variations of Null,
null, nil, Nothing, None and perhaps more that I am unaware of. And in
C# there's language support for the notion of a Nullable, basically
automatic wrapper classes in the form of something like:

struct Nullable<T>{
    public bool hasValue;
    public T Value;
}

This means you don't have to overload the meaning of null, makes it
possible to use primitive types as well and a lot more efficient than
boxing:

int? x = null;
int y = null // Not allowed

/Casper

On 9 Sep., 00:21, Rob Wilson - BabyDuke JUG <netp...@gmail.com> wrote:
> These were great posts - thanks guys.
>
> It's interesting that you mention databases in relation to nulls,
> because this is where I've historically had to deal with null Booleans
> and suchlike.  Usually it's as you describe - the entries are nullable
> and therefore I need to do something different in that scenario.
>
> I guess I have got used to that and perhaps have a bad habbit of
> setting objects to null to indicate some state - rather than introduce
> another variable, for example I might have an array of 100 integers
> and rather than loop through them and setting a boolean to indicate
> something for each, I might null any integers that were invalid, hey-
> presto, extra state, same number of objects...
>
> Now I can change the way I do some of that programming, but I don't
> think I can change the fact that some of my data will be null - in
> fact in my latest project I want to enable the user to enter as little
> as they want - but I don't want the booleans to be treated as false or
> numbers as 0, they are not provided and therefore should be null.
>
> I don't think anyone has suggested an ideal solution to this yet?
>
> Cheers again!
> Rob.
>
> On Sep 8, 7:00 pm, Casper Bang <casper.b...@gmail.com> wrote:
>
> > Boolean is really just an Enum that can be True and False isn't it?
> > I'm guessing a modern day version of Java would've implemented them as
> > such. Then it would be no problem representing a tri-state, quad-state
> > or whatever.
> > The problem with null is that we end up with so much testing which
> > obscures the essential parts of our code. It's actually much same
> > debate going on in the DBMS world, with a better excuse though since
> > this is how you denote an empty set in this relational model.
>
> > /Casper
>
> > On 8 Sep., 19:13, Jess Holle <je...@ptc.com> wrote:
>
> > > I've always found the whole endless debate over "null" treatment that
> > > I've seen here and elsewhere odd.
>
> > > In databases most everything is nullable unless explicitly stated
> > > otherwise -- and there's good reason for this.  There are really good
> > > use cases for true/false/null tri-state data -- and similar use cases
> > > with most any other data type.  How does one get this in JavaFX?
>
> > > I can see that maybe one need @Nullable Boolean to tell the JavaFX
> > > compiler that
>
> > > Joshua Marinacci wrote:
> > > > It's also important to point out that the compiler rejects null for a  
> > > > Boolean because null simply isn't a valid value for a boolean (in the  
> > > > abstract mathematical sense of 'boolean'). Booleans can be true or  
> > > > false. That's it. The compiler rejects anything else. The same for  
> > > > Numbers.  The compiler tries to enforce what makes logical sense,  
> > > > since setting a boolean to null is almost always a programmer error.  
> > > > That said, since you *can* drop down to the Java there *are* ways to  
> > > > defeat the javafxc compiler protections if you really want to, but  
> > > > then you are taking your own life into your own hands. :)
>
> > > > On Sep 7, 2009, at 7:02 PM, TorNorbye wrote:
>
> > > >> I posted a comment on the blog, but I don't see it there so I may have
> > > >> done something wrong.
>
> > > >> In any case, as far as I understand things (from using the language -
> > > >> I'm not working on the compiler team)
>
> > > >> 1. The return type of a function, if it isn't specified explicitly
> > > >> (either here or in the function it is overriding or by the parameter
> > > >> type you are supplying the function to) is inferred from the last
> > > >> statement of the function.   I personally tend to specify it
> > > >> explicitly in function declarations, especially if it's a public
> > > >> function. I likewise tend to specify it on variables, if I (a) want to
> > > >> use a broad type (e.g. List instead of ArrayList)_, or (b) if I don't
> > > >> assign to it right away.
>
> > > >> 2. When you see :Boolean (or :Number etc) specified as a type, that
> > > >> doesn't mean it's a java.lang.Boolean or java.lang.Number.  The JavaFX
> > > >> compiler will try to find the most efficient way to represent it --
> > > >> which means that it can often use a native int, float or boolean
> > > >> primitive. (In other cases, where there is a bind involved, it may be
> > > >> a BooleanVariable object etc).   It's pretty interesting to use the
> > > >> javap tool to see how the variables, properties, functions etc. are
> > > >> represented as Java classes by the compiler. This would explain why
> > > >> you can null a string but not a boolean for example.
>
> > > >> Hope that clears things up, if not just ask again.
>
> > > >> -- Tor
>
> > > >> On Sep 7, 2:20 pm, Rob Wilson <netp...@gmail.com> wrote:
>
> > > >>> Hi all,
>
> > > >>> I posted last week to let you know about my first post in JavaFX, I
> > > >>> now have a new post that's slightly more in-depth covering some
> > > >>> language oddities from my perspective.
>
> > > >>> If you're interested...http://spikyorange.blogspot.com/
>
> > > >>> Cheers,
> > > >>> Rob.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to javaposse@googlegroups.com
To unsubscribe from this group, send email to 
javaposse+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to