Cast a generic object

Hi how do you cast a generic object.
For example I have a class GenericModel which can be either a movie or a director however when I wish to print out any awards that either a director or a movie has, I need to cast a generic variable (gM) to either a movie or a director something like this ...
try {
GenericModel d = (Director) gM;
} if that fails do this{
GenericModel m = (Movie) gM;
}catch (Exception e){
Or any other way that works.
most appreciated

Huh? I don't see why you necessarily need to cast anything and certainly not to base types such as Director or Movie.
Also, the "try and if it fails try something else' pattern can be grossly inefficient.
I wish to print out any awards that either a director or a movie hasThen your Director and Movie objects both need a printAwards() method; they also need to be sub-classes of a common class (or implement a common interface) that has all the behaviors you want to be in common.
If that common class is GenericModel, then you would merely do:
  gM.printAwards();If that common class is something else, lets call it FilmObject, then you would need to cast your gM object to execute printAwards(), as so:
if ( gM instanceof FilmObject )
  ( (FilmObject) gM).printAward();
}This is really more of a basic Java issue that has nothing to do with JDBC or transactions; if you have followup questions, please ask them in another forum, not here.

Similar Messages

  • Casting or Generics, which is better?

    Which is better for serialization <--> de-serialization?
    public class MyClass {
    private Object st;
    public MyClass (Object what) { st = what; }
    public Object get() {return st;}
    out.writeObject(new MyClass("This is a test"));
    Object ob =  in.readObject();
    if (ob instanceof String) {
      Sting result = (String) ob;
    }Or using Generics?
    public static final byte STRING_TYPE = 0x01;
    public class MyClass<T> {
    private T st;
    private byte type;
    public MyClass ( byte type, T what ) { st = what; this.type = type; }
    public T get() {return st;}
    public byte getType() {return type;}
    out.writeObject(new MyClass<String>(STRING_TYPE,"This is a test"));
    MyClass<?> value =  (MyClass<?>) in.readObject()
    if (value.getType() == STRING_VALUE) {
      MyClass<String> str = (MyClass<String>) value;
      Sting result = str.get();
    }Both have unchecked casts (at least according to Eclipse), it is better to cast the generic or just use casts and not use generics? The latter is more complicated but allows more flexibility, but which method is correct?

    CREATE TABLE `login` (
    `username` varchar(40) DEFAULT NULL,
    `password` varchar(40) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    CREATE TABLE `amount` (
    `amountid` int(11) NOT NULL,
    `receiptid` int(11) DEFAULT NULL,
    `loanid` int(11) DEFAULT NULL,
    `amount` bigint(11) DEFAULT NULL,
    `latefee` int(11) DEFAULT NULL,
    `paymentid` int(11) DEFAULT NULL,
    `pid` int(11) DEFAULT NULL,
    PRIMARY KEY (`amountid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    CREATE TABLE `applicationfee` (
    `applicationfeeid` int(11) DEFAULT NULL,
    `applicationamount` int(11) DEFAULT NULL,
    `applicationfee` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    CREATE TABLE `category` (
    `categoryid` int(11) DEFAULT NULL,
    `categoryname` varchar(40) DEFAULT NULL,
    `categorydescription` varchar(500) DEFAULT NULL,
    `cattype` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    CREATE TABLE `commission` (
    `commissionid` int(11) DEFAULT NULL,
    `bussiness` int(11) DEFAULT NULL,
    `commission` int(11) DEFAULT NULL,
    `pid` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    CREATE TABLE `customer` (
    `cacno` int(11) NOT NULL DEFAULT '0',
    `name` varchar(40) DEFAULT NULL,
    `age` int(11) DEFAULT NULL,
    `cphone` varchar(40) DEFAULT NULL,
    `cmobile` varchar(40) DEFAULT NULL,
    `caddress` varchar(500) DEFAULT NULL,
    `cstatus` varchar(20) DEFAULT NULL,
    `cphoto` longblob,
    `pid` int(11) DEFAULT NULL,
    PRIMARY KEY (`cacno`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    CREATE TABLE `daybook` (
    `closingbal` varchar(40) DEFAULT NULL,
    `date` date DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    CREATE TABLE `extraincome` (
    `categoryid` int(11) NOT NULL,
    `receiptid` int(11) DEFAULT NULL,
    `date` date DEFAULT NULL,
    `amountid` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    CREATE TABLE `employee` (
    `empno` int(11) DEFAULT NULL,
    `empname` varchar(40) DEFAULT NULL,
    `age` int(11) DEFAULT NULL,
    `sal` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    CREATE TABLE `image` (
    `id` int(11) DEFAULT NULL,
    `image` blob
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    CREATE TABLE `loan` (
    `loanid` int(11) NOT NULL DEFAULT '0',
    `loanamt` varchar(40) DEFAULT NULL,
    `payableamount` double DEFAULT NULL,
    `installment` int(11) DEFAULT NULL,
    `payableinstallments` int(11) DEFAULT NULL,
    `monthlyinstallment` varchar(20) DEFAULT NULL,
    `surityname` varchar(20) DEFAULT NULL,
    `applicationfeeid` int(11) DEFAULT NULL,
    `interestrate` float DEFAULT NULL,
    `issuedate` date DEFAULT NULL,
    `duedate` date DEFAULT NULL,
    `nextduedate` date DEFAULT NULL,
    `cacno` int(11) DEFAULT NULL,
    `cname` varchar(20) DEFAULT NULL,
    `pid` int(11) DEFAULT NULL,
    `interestamt` double DEFAULT NULL,
    `pendingamt` float DEFAULT NULL,
    PRIMARY KEY (`loanid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    CREATE TABLE `md` (
    `mdid` int(11) NOT NULL DEFAULT '0',
    `mdname` varchar(40) DEFAULT NULL,
    `mdphoto` varchar(100) DEFAULT NULL,
    `mdphone` varchar(40) DEFAULT NULL,
    `mdmobile` varchar(40) DEFAULT NULL,
    `mdaddress` varchar(500) DEFAULT NULL,
    PRIMARY KEY (`mdid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    CREATE TABLE `partner` (
    `pid` int(11) NOT NULL DEFAULT '0',
    `pname` varchar(40) DEFAULT NULL,
    `paddress` varchar(500) DEFAULT NULL,
    `pphoto` varchar(100) DEFAULT NULL,
    `pphone` varchar(40) DEFAULT NULL,
    `pmobile` varchar(40) DEFAULT NULL,
    `pstatus` varchar(20) DEFAULT NULL,
    `mdid` int(11) DEFAULT NULL,
    `mdname` varchar(40) DEFAULT NULL,
    `date` date DEFAULT NULL,
    `nextpaydate` date DEFAULT NULL,
    PRIMARY KEY (`pid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    CREATE TABLE `partnerinvested` (
    `pid` int(11) DEFAULT NULL,
    `pname` varchar(20) DEFAULT NULL,
    `receiptid` int(11) DEFAULT NULL,
    `date` date DEFAULT NULL,
    `amountinvested` int(11) DEFAULT NULL,
    `latefee` int(11) DEFAULT NULL,
    `amountid` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    CREATE TABLE `payments` (
    `paymentid` int(11) NOT NULL,
    `categoryid` int(11) DEFAULT NULL,
    `particulars` varchar(100) DEFAULT NULL,
    `amountid` int(11) DEFAULT NULL,
    `paymentdate` date DEFAULT NULL,
    PRIMARY KEY (`paymentid`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    CREATE TABLE `receipts` (
    `receiptid` int(11) DEFAULT NULL,
    `paiddate` date DEFAULT NULL,
    `amountid` int(11) DEFAULT NULL,
    `loanid` int(11) DEFAULT NULL,
    `latefee` int(11) DEFAULT NULL,
    `installment` int(11) DEFAULT NULL,
    `cacno` int(11) DEFAULT NULL,
    `cname` varchar(40) DEFAULT NULL,
    `pid` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

  • OOP Generic Object Manager

    Has any of the OOP programmers out there ever developed a generic object manager?  What I mean by this is a an Object in LabVIEW that can hold references to all objects in an application that can be accessed generically through a name input and not via know each individual class type.  I have been trying to create a class that essentially has as its attributes an array of LV Objects since all objects descend from this class.  I am struggling with getting the specific class back from the generic class.  If I probe the array it shows the class specific type.
    So what I am trying to do is search an array of standard LabVIEW Objects for a specific LabVIEW type.  Here I created an array of LabVIEW object by casting specific classes to the most generic class - LabVIEW Object.  Then I want to search an array for a specific class by taking a specific class constant and casting it to a more generic class.  It seems like it keeps the reference information (ID).
    Any thoughts?

    LV2009 added a function which is probably crucial to delivering a nice solution to this problem. The function is called Preserve Run-time Class. It allows you to propogate the strict type of an object through a subVI that is coded to operate on a more generic class type.
    Here's an example written in LV2009 for a simple class that stores any other LV class object by name.
    Jarrod S.
    National Instruments
    Attachments:
    Temp.zip ‏33 KB

  • Legal casting in generics

    I'm migrating from 1.4 to 1.5 and have a question about when casting is legal (and workable) in generics. After reading various literature, it seems that erasure removes type information at run time. Yet casting does seem to work. Here is the source of min() in Collections class -
        public static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp) {
            if (comp==null)
                return (T)min((Collection<SelfComparable>) (Collection) coll);
    .....Obviously this code works. If erasure removes type info, how do the casts above work?
    More generally, when is casting to generic types allowed and succeed in 1.5 and above?
    And also I'm curious if the compiler generated any unchecked message on this piece of code (I don't see any suppresswarning tag in the source).
    Thanks

    Obviously this code works. If erasure removes type info, how do the casts above work?A generic call is replaced with explicit casts by the compiler:
    public static <T> T min(Collection<? extends T> coll, Comparator<? super T> comp) {
    // becomes (generic type is erased)
    public static Object min(Collection coll, Comparator comp) {
    Number minimum = min(new ArrayList<Number>(), null);
    // becomes (explicit cast added)
    Number minimum = (Number) min(new ArrayList(), null);
    More generally, when is casting to generic types allowed and succeed in 1.5 and above?It is allowed, but it is always an "unchecked" warning. Note that the generic cast is erased, so it can't succeed or fail.
    The explicit cast that the compiler adds (in this case when the method is called) can fail if there are unchecked warnings.
    Note that if a generic is bounded, the generic cast is erased to the bounds (if <T extends Number> then (T) will be (Number), but if that is an illegal cast you get an compiler error:
    // eclipse compiler will also complain Double is final and cannot be extended.
    public <T extends Double> T min(String arg, Number arg2) {
      // error: Cannot cast from String to T
      Double error = (T) arg;
      // warning: Type safety: The cast from Number to T is actually checking against the erased type Double
      // aka it might be an Integer
      Double warning = (T) arg2;
    }

  • Show originally filename in attachment list (generic object services)

    Hello everybody,
    does anybody know, if it is possible to show the originally filename of a document in the attachment list of generic object services?
    If I add more than one document for the same document type in generic object services, I'm not able to distinguish the documents.
    When I want to save an attachment to local PC, SAP offers me the originally filename as default. Therefore, the filename has to be saved somewhere...
    Thanks for any help or ideas in advance,
    Peter

    Richard,
    Your using the wrong object, I don't have access to an SAP system right now, so I can't tell you what the correct object is, but when it's configured correctly in OAC3 it will not be grey out.  Best thing to do it see what the object the program is publishing.  This is what GOS is looking for.  IFARCH21 is not the answer, unless your using workflow

  • How to create a Generic Object Services for a standard tcode.

    Hi,
    We have a requirement where we are depreciating the assets (standard transaction ABAA) using a custom BDC program. We need to maintain a history (called audit trail) for the particular asset that has been depreciated using this program. For this audit train we have been asked to use "Generic Object Services" in transaction code ABAA.
    Unfortunately, Generic object services are not available in this transaction code. Can you please suggest me how to create "Generic Object Services" for a particular standard transaction code. Also, we have show the details of custom workflow that follows the approval process in order to depreciate the asset. how to show this workflow details using Generic Services. This is a very critical issue, any help will be very help ful.
    Please let me know should you require more information on this topic.
    Thanks,
    Ashish

    Instead of copyg the std fm to z, do the following,
    1. Go to se37 open FM VIEW_KURGV in display mode.
    2. Click on the spiral icon on the top.
    3. Then in menu go edit->enhancment options -> show implicit enhancement
    4. """""""""""""""""""""" kind of lines will appear in the cde, just rt click on the line at the place u want to insert the code and select
         enhancement implementation create.
    5. Give apropriate name for thi , it will inset a n place to write your code.
    This is an std sap methodology and is supported in upgradde also.

  • Add BUS2009 to generic object services

    Hi Experts,
    We have header level release strategy to PR approval. We are using BUS2105 delegated to ZBUS2105.
    There is another custom workflow has been defined, using BUS2009 delegated to ZBUS2009.
    in ME53n, Generic object services I can only see ZBUS2105 Workflows.
    Is there any method I can add show both the workflows there.
    Your help is much appreciated.
    Thanks,
    Gaurav

    Ya Arghdip, please elaborate how to instantiate the object inside the workflow design using GenericInstantiate Method of SYSTEM Business Object.
    in my case I am getting required entries in table but even thn I am not able to see workflow overview from Generic Object Services.
    Please help.
    Regards
    Nitin

  • Create Attachments to Generic Object Services from Webdynpro appliccation

    Hi,
    I have requirement to Create Attachments  to Generic Object Services(GOS) in equipment master (IE03)  from webdynpro when a user clicks on upload button and also allow the user to delete the attachments .
    Can anyone advice me of any Function Modules or logic to use from Web GUI.
    I used below logic from R/3 to create attachments, but from webdynpro this method doesn't work.
    DATA lo_attachment TYPE REF TO cl_gos_document_service.
      CREATE OBJECT lo_attachment.
      CALL METHOD   lo_attachment->create_attachment
           EXPORTING  is_object = ls_object
           IMPORTING  ep_attachment = lp_attachment
    Your inputs are appreciated.
    Thanks
    Rajesh Yalda

    Hi,
    try using the Class CL_GOS_SRV_ATTACHMENT_CREATE with Method EXECUTE_ITS.
    best regards,
    Michael

  • How to use Generic Object Services(GOS) for each table control record.

    Dear Expert,
                       I am using generic object services for document attachment but i am facing a problem while attaching document to a table control row. my requirement is to attach separate document for each and every row of table control but  i am unable to attach document row wise of the table control.for each row GOS should display corresponding attached document not all the attached document.
    Thanks in Advanced
    Bhuwan Tiwari
    Edited by: BHUWAN TIWARI on Feb 8, 2011 4:16 PM
    Edited by: BHUWAN TIWARI on Feb 8, 2011 4:16 PM

    You haven't explained what object and object key you're using, nor have you provided any indication of how you implemented the GOS attachment functionality.  You need to provide more information to resolve an issue like this.

  • Adding Generic Object Services attachments to PRA trans O3U_DO3

    I would like to add the generic object services attachment menu that is found in vf02 - invoice create to the production and revenue accounting module transaction O3U_DO2/O3U_DO3 Maintain/Display DOI Owners.  I need the ability to attach external documents through archive link to this transaction.  If not possible with generic object services, any other suggestions on how to attach the documents is greatly appreciated.

    Hi,
    Welcome to the SDN Forums!!!
    You need to supply the PC file extension in the container element 'DOCUMENTTYPE'.
    swc_set_element lt_message_container 'DOCUMENTTYPE' p_msgtyp.
    In your case change the above statement as below:
    swc_set_element lt_message_container 'DOCUMENTTYPE' 'pdf'.
    <b>OR</b> change the default value of p_msgtyp to 'PDF'.
    Cheers,
    Ramki Maley.
    Please reward points if the answer is helpful.
    For info on awarding points click on this link: https://www.sdn.sap.com/sdn/index.sdn?page=crp_help.htm
    Message was edited by: Ramki Maley

  • Attach Documents to Custom Program Using Generic Object Services

    Hi There,
             I created Object type ZGOS and used in the custom program, when i try to attach documents it allows and then shows in attachment list.
            But When I use that program next time that document attached is not available.
    Is there any separate save Class or FM available for saving the document to the specified custom program.
    I am using following code in the program,
      CLEAR obj.
    SET OBJECT TYPE TO 'ZGOS'
      obj-objtype = objtype.
    SET OBJECT KEY = REPORT NAME
      SELECT SINGLE name
      FROM trdir
      INTO obj-objkey
      WHERE name = sy-repid.
    CALL GOS MANAGER WITHOUT CONTAINER (WILL BE DISPLAYED IN THE TOOLBAR)
      CREATE OBJECT manager
        EXPORTING
          is_object = obj
        EXCEPTIONS
          OTHERS    = 1.
    Thanks in advance.

    Check the Naimesh Patel Blog he explain very well
    http://help-abap.blogspot.com/2009/02/generic-object-services-gos-toolbar.html

  • Display and Manage Attachments of Generic Object Services in Webdynpro

    Hi All,
    I need to have a button in the webdynpro that when a user clicks it will pop up a table that display a list of files already attached to a Generic Object Services(GOS) and also allow the user to delete the attachments and upload new attachments.
    Can anyone advice me of any Function Modules or Methods that i can use to achieve those functions (retrive and display attachments in the GOS, delete existing attachment from GOS, upload new attachment to GOS).
    Thanks and Regards,
    weilong

    Hi
    You need to pass parameters as per the code below
    ****Data Types
      CONSTANTS:lc_dokob        TYPE dokob VALUE 'KNA1',
                  lc_dokar      TYPE dokar VALUE 'LEG',
                  lc_dappl      TYPE dappl VALUE 'BVO',
                  lc_sign       TYPE c VALUE 'I',
                  lc_option(2)  TYPE c VALUE 'EQ',
                  lc_docpart(3) TYPE c VALUE '000',
                  lc_docversion TYPE dokvr VALUE '00',
                  lc_status     TYPE dokst VALUE 'AL',
                  ls_attc-doknr    TYPE doknr,
                  ls_return TYPE bapiret2,
    *****Function Module
      CALL FUNCTION 'BAPI_DOCUMENT_DELETE_DIRECT'
            EXPORTING
              documenttype    = lc_dokar
              documentnumber  = ls_attc-doknr
              documentpart    = lc_docpart
              documentversion = lc_docversion
            IMPORTING
              return          = ls_return.
    Thanks
    Vishal

  • Events available in Generic Object Services (GOS)?

    Hello everybody
    Searched around in SDN and also tried to find something useful in our system (SWO1) but can't find useful information on GOS events so I guess it probably doesn't exist?
    I'm searching a way to catch GOS events when someone adds, changes or deletes an attachment (URL) in the generic object services of an object, e.g. for a material master (BUS1001006). I'd like to create a change document for this and based on that to trigger some further processing for one of our interfaces.
    Anybody out there knowing how to achieve this?
    TIA and best regards,
    Renaud

    There's a couple of BaDIs with GOS names such as GOS_SRV_REQUEST that might help.  Otherwise I'd try using SE30 with lots of logging options set on to trace where you may be able to grab this info from.  GOS subscriptions may be another thing to look at.
    Jonathan

  • Generic Object Services - restrict toolbar functions?

    Hello,
    When I create a URL link to an object, there is always a 'delete' button in the toolbar of the attachment list. Apparently, there are no authorization checks being made and everyone can delete this link.
    Is it possible to remove this button from the toolbar? Or at least making sure that not everyone can delete the link?
    Thanks!

    Hi,
    I think you are using CL_GOS* class for this. then
    module call_gos_attachment output.
    "<< I have created a authorisation object and
    " and called here if user have only display or change
    " access then the ip_mode will get value passed
    " accordingly
      if ( sy-tcode eq c_yars2 or sy-tcode eq c_yars3 ).
          i_borident-objtype = 'YARS_ATTA'.
          i_borident-objkey = yarshdr-docno.
          create object gos_manager
            exporting
               is_object            = i_borident
               it_service_selection = i_services
               ip_no_commit         = ' '
            exceptions
               object_invalid       = 1.
        else.                                " Display Mode
          i_borident-objtype = 'YARS_ATTA'.
          i_borident-objkey = yarshdr-docno.
          create object gos_manager
            exporting
               is_object            = i_borident
               it_service_selection = i_services
               ip_mode              = 'D'      "<<<<<< Check for display mode
            exceptions
               object_invalid       = 1.
        endif.
    endmodule.                               " Call_gos_attachment Output
    or if this suit your need then
        create object gos_view
          exporting
            ip_mode = 'D'.                     " <<<<Display Mode
    * Start GOS Service for attachement view
        i_viewobj-objtype = 'YARS_ATTA'.
        i_viewobj-objkey = yarshdr-docno.
        call method gos_view->start_service_direct
          exporting
            ip_service = 'VIEW_ATTA'
            is_object  = i_viewobj.
    This i have done it for one of the custom Generic object, i think this one will help you out.

  • Generic Object Services for a standard transaction code

    Hi,
    We have a requirement where we are depreciating the assets (standard transaction ABAA) using a custom BDC program. We need to maintain a history (called audit trail) for the particular asset that has been depreciated using this program. For this audit trail we have been asked to use "Generic Object Services" in transaction code ABAA.
    Unfortunately, Generic object services are not available in this transaction code. Can you please suggest me how to create "Generic Object Services" for a particular standard transaction code. Also, we have show the details of custom workflow that handles the approval process in order to depreciate the asset. How to show this workflow details using Generic Object Services. This is a very critical issue, any help will be very help ful.
    Please let me know should you require more information on this topic.
    Thanks,
    Ashish

    Hello Ashish,
    i dont think activating of GOS will solve ur probs..... GOS wont create a WF item ...... try to get some kind of GOS before u do anything in SAP systems.
    u can do like this ......
    1 create custom screen where u can enter asset details and store in custom tables....and generate one custom doc.number to track.
    2. trigger WF when user submits it for approvals.
    3.Upon final approvals.--->run BDC to do postings......
    4.Give a Option to attach documents to the parking documents. ( that GOS ).
    regards
    Prabhu

Maybe you are looking for