Object message?

Discussion in 'Java' started by bob smith, Oct 8, 2012.

  1. bob smith

    bob smith Guest

    Can someone tell me why "message" is an Object here in javax.swing.JOptionPane?

    Why isn't it a String?

    showMessageDialog
    public static void showMessageDialog(Component parentComponent,
    Object message)
    throws HeadlessException
    Brings up an information-message dialog titled "Message".
     
    bob smith, Oct 8, 2012
    #1
    1. Advertising

  2. bob smith

    Arne Vajhøj Guest

    On 10/8/2012 3:52 PM, bob smith wrote:
    > Can someone tell me why "message" is an Object here in javax.swing.JOptionPane?
    >
    > Why isn't it a String?
    >
    > showMessageDialog
    > public static void showMessageDialog(Component parentComponent,
    > Object message)
    > throws HeadlessException
    > Brings up an information-message dialog titled "Message".


    If you really want to know, then lookup the author in the
    source and email him.

    For a guess: they wanted to make it convenient for callers, so
    they call toString instead of caller having to.

    Arne
     
    Arne Vajhøj, Oct 8, 2012
    #2
    1. Advertising

  3. On 10/8/2012 12:52 PM, bob smith wrote:
    > Can someone tell me why "message" is an Object here in javax.swing.JOptionPane?
    >
    > Why isn't it a String?
    >
    > showMessageDialog
    > public static void showMessageDialog(Component parentComponent,
    > Object message)
    > throws HeadlessException
    > Brings up an information-message dialog titled "Message".
    >


    import java.awt.*;
    import javax.swing.*;

    public class test8 {
    public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
    public void run() {
    JLabel l = new JLabel("Because I'm an Object");
    JOptionPane.showMessageDialog(null,l);
    }
    });
    }
    }



    --

    Knute Johnson
     
    Knute Johnson, Oct 8, 2012
    #3
  4. bob smith

    Eric Sosman Guest

    On 10/8/2012 3:52 PM, bob smith wrote:
    > Can someone tell me why "message" is an Object here in javax.swing.JOptionPane?


    Um, er, have you considered reading the class' Javadoc?

    "A descriptive message to be placed in the dialog box.
    In the most common usage, message is just a String or
    String constant. However, the type of this parameter
    is actually Object. Its interpretation depends on its
    type: [...]"

    > Why isn't it a String?


    So it can be something other than a String, of course.

    --
    Eric Sosman
    d
     
    Eric Sosman, Oct 8, 2012
    #4
  5. bob smith

    Roedy Green Guest

    On Mon, 8 Oct 2012 12:52:56 -0700 (PDT), bob smith
    <> wrote, quoted or indirectly quoted someone
    who said :

    >Can someone tell me why "message" is an Object here in javax.swing.JOptionP=
    >ane?
    >
    >Why isn't it a String?


    In general Object can let you pass any sort of information to
    yourself, not just a string. It can be formatted data. The
    disadvantage is you must cast it to a String.
    --
    Roedy Green Canadian Mind Products http://mindprod.com
    The iPhone 5 is a low end Rolex.
     
    Roedy Green, Oct 9, 2012
    #5
  6. On 09/10/2012 11:11, Roedy Green allegedly wrote:
    > On Mon, 8 Oct 2012 12:52:56 -0700 (PDT), bob smith
    > <> wrote, quoted or indirectly quoted someone
    > who said :
    >
    >> Can someone tell me why "message" is an Object here in javax.swing.JOptionP=
    >> ane?
    >>
    >> Why isn't it a String?

    >
    > In general Object can let you pass any sort of information to
    > yourself, not just a string. It can be formatted data. The
    > disadvantage is you must cast it to a String.


    Not quite, Roedy. Among other things, it can be any JComponent. And
    that's extremely useful.

    --
    DF.
     
    Daniele Futtorovic, Oct 9, 2012
    #6
  7. bob smith

    Lew Guest

    Daniele Futtorovic wrote:
    > Roedy Green allegedly wrote:
    >> bob smith wrote, quoted or indirectly quoted someone who said :
    >>> Can someone tell me why "message" is an Object here in javax.swing.JOptionPane?
    >>> Why isn't it a String?

    >
    >> In general Object can let you pass any sort of information to
    >> yourself, not just a string. It can be formatted data. The
    >> disadvantage is you must cast it to a String.


    No, you mustn't, actually. That would defeat the purpose of the 'message' argument.

    > Not quite, Roedy. Among other things, it can be any JComponent. And
    > that's extremely useful.


    The other things: an 'Icon', an array, a 'Component' (not just 'JComponent', per the docs),
    and of course, any ol' 'Object' via its 'toString()'.

    Also, in general you cannot cast a reference to 'String'. Reference casts must adhere to
    http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.5.1

    You can use 'String' conversion or a transformation method.

    http://docs.oracle.com/javase/specs/jls/se7/html/jls-5.html#jls-5.4
    http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#valueOf(java.lang.Object)
    http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#toString()
    et al.

    As for the OP's question, IT'S IN THE JAVADOCS!

    http://docs.oracle.com/javase/7/docs/api/javax/swing/JOptionPane.html

    "message
    "A descriptive message to be placed in the dialog box. In the most common usage, message is just a String or String constant. However, the type of this parameter is actually Object. Its interpretation depends on its type: ..."

    Followed by an explanation of what it does for each type. So, no, you don't have to convert/transform the reference to a 'String', contrary to what was said upthread.

    bob, you might not be aware of the full power of the Javadocs. The ones for 'JOptionPane' show a lot of
    that power. It's got class-level documentation, which you should go ahead and read after all, field (static
    constant) documentation, constructor documentation, method documentation, nested class
    documentation, and of course, package documentation through the 'javax.swing' package
    documentation. It's also got hyperlinked documentation, some of which in Swing's case seems to
    have gotten sparse and some of which is good.

    Swing is a tricky package. First and foremost it's a UI-builder platform. I've used a bunch, such
    as OpenLook, and quite often they are messy, but creatively and purposefully so. It's also an API.
    This means it speaks in two domains of discourse. Types in an API have members, but that's a
    different "containment" than a UI component exercises over another. The former is class
    membership and the latter is geometric enclosure, sort of.

    So the method could have had a bunch of overloads, one for each different 'message' type (not to
    be confused with a 'messageType'), but that could lead to an explosion of methods, so they chose
    to stick with 'Object' and presumably reflectively work its display magic. As a UI component it has
    the luxury of time to examine its arguments, but you do lose the safety net of compile-time checks.

    --
    Lew
     
    Lew, Oct 10, 2012
    #7
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. =?Utf-8?B?bWc=?=
    Replies:
    1
    Views:
    2,150
    Marshal Antony
    Feb 8, 2004
  2. =?Utf-8?B?bWc=?=

    Size of e-mail message - message.Body = msgText

    =?Utf-8?B?bWc=?=, Feb 10, 2004, in forum: ASP .Net
    Replies:
    1
    Views:
    572
    Chad Z. Hower aka Kudzu
    Feb 11, 2004
  3. - Steve -
    Replies:
    0
    Views:
    706
    - Steve -
    Jul 6, 2004
  4. tshad
    Replies:
    0
    Views:
    801
    tshad
    Jan 27, 2005
  5. Gavin
    Replies:
    3
    Views:
    484
    Chris Uppal
    Mar 28, 2007
Loading...

Share This Page