Instance an Object which name is in a string

hi, I've this problem:
I must instance an Object, but the Object's type name is stored in a string. I could write a code similar to this:
Object c = new "Car"();
Someone can help me?

sorry, but I don't understand very well....don't panic, doremisafolatido ( is that right? ) isgiving you an impromptu lesson in polymorphism!
Close enough. :)
He'll need polymorphism. If he couldn't
construct a Car the normal way (without reflection),
he won't be able to cast to one. If he writes the
Car as follows, he can cast to a Runnable (I know you
know this, but he seems not to).
public class Car implements Runnable
public void run() {
// doSomething
String name = "my.package.Car";
Class clazz = Class.forName(name);
Object obj = clazz.newInstance();
((Runnable)obj).run();
I'd advise against using Runnable for anything other than threads. I've used Runnable in what seems like a perfectly acceptable situation, and it confused the hell out of everyone else on the project - they associate Runnable with threading, and couldn't get their head around what I was using it for. one of our technical leads got very upset that I was introducing threads to the code without good reason. It beggars belief that people in such high-profile positions couldn't tell the difference, but they couldn't, so I learnt not to use Runnable for anything other than passing to threads

Similar Messages

  • Call a function, which name is in an Array of Strings...

    hey all
    i have a simple Temp class (made to check things) in a file called Temp.java with the following definition :
    public class Temp {
         int data1;
         int data2;
         public Temp (){
              data1=0;
              data2=0;
         (here i have get and set functions for both data1 and data 2, and i have the two following functions)
         public void printAdd(){
              System.out.println("Result : "+(data1+data2));
         public void printSubtract(){
              System.out.println("Result : "+(data1-data2));
    }i have another class called Server who has the following simple code :
    public class Server {
          public static void main( String args[] )
               String[] table={"printAdd","printSubtract"};
               Temp game=new Temp();
               game.setdata1(8);
               game.setdata2(4);
              //the following two calls work perfectly
               game.printAdd();
               game.printSubtract();
                   System.out.println(table[0]);
    //but the following does not...
               game.(table[0]);
    }as probably you have understood i am trying to call a function to the object game which name is in the String table... how can i actually made a call game.(THE_VALUE_OF_STRING_IN_AN_ARRAY) ...?

    i want to call the function printAdd() to the game object..
    but i want the program to find out the name of the function to call.. i want to execute the function whose name is at the array in position 0 -> table[0]
    so i want the program to resolve the table[0] to printAdd and the use it and call it on object game...

  • Solution to: javax.naming.AuthenticationException.  Root exception is java.lang.SecurityException: attempting to add an object which is not an instance of java.security.Principal to a Subject's Principal Set

    Hello world,
    To anybody who receives this irritating error in a Java client
    application attempting to access Weblogic Server 6.1 (and possibly
    weblogic server 6):
    javax.naming.AuthenticationException. Root exception is
    java.lang.SecurityException: attempting to add an object which is not
    an instance of java.security.Principal to a Subject's Principal Set
    The cause of your problem is having JAAS explicitly in your classpath.
    It somehow messes up authentication to WebLogic. Remove it and your
    problem will disappear.
    The complete exception was:
    javax.naming.AuthenticationException. Root exception is
    java.lang.SecurityException: attempting to add an object which is not
    an instance of java.security.Principal to a Subject's Principal Set
         at javax.security.auth.Subject$SecureSet.add(Subject.java:1098)
         at weblogic.common.internal.BootServicesStub.writeUserInfoToSubject(BootServicesStub.java:72)
         at weblogic.common.internal.BootServicesStub.authenticate(BootServicesStub.java:80)
         at weblogic.security.acl.internal.Security.authenticate(Security.java:108)
         at weblogic.jndi.WLInitialContextFactoryDelegate.pushUser(WLInitialContextFactoryDelegate.java:509)
         at weblogic.jndi.WLInitialContextFactoryDelegate.newContext(WLInitialContextFactoryDelegate.java:364)
         at weblogic.jndi.WLInitialContextFactoryDelegate.getInitialContext(WLInitialContextFactoryDelegate.java:336)
         at weblogic.jndi.WLInitialContextFactoryDelegate.getInitialContext(WLInitialContextFactoryDelegate.java:208)
         at weblogic.jndi.WLInitialContextFactory.getInitialContext(WLInitialContextFactory.java:149)
         at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:668)
         at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:246)
         at javax.naming.InitialContext.init(InitialContext.java:222)
         at javax.naming.InitialContext.<init>(InitialContext.java:198)
         at au.com.orrcon.orrconcentral.Application.<init>(Application.java:87)
         at au.com.orrcon.orrconcentral.Application.getApp(Application.java:52)
         at au.com.orrcon.orrconcentral.orrconCentral.<init>(orrconCentral.java:130)
         at au.com.orrcon.orrconcentral.orrconCentral.main(orrconCentral.java:219)

    Steve Wesemeyer <[email protected]> wrote:
    I have encountered the same problem and I do not have JAAS on my classpath
    at all (unless it's there by default). Are there any other possible
    causes for this?
    Cheers,
    SteveA note to all who read this thread:
    I also had to remove Sun's j2ee (version 1.2) from my client's classpath before
    the same problem went away. 1 programmer day down the drain....
    Regards,
    MG

  • Jaas sample progrma in weblogic 6.1 giving the following error java.lang.SecurityException: attempting to add an object which is not an instance of java.security.Principal to a Subjec

    jaas sample progrma in weblogic 6.1 giving the following error java.lang.SecurityException:
    attempting to add an object which is not an instance of java.security.Principal
    to a Subjec
    on runnig the program during the call of method Authenticate.authenticate(env,
    subject); giving following exceptions Error: Login Exception on authenticate,
    java.lang.SecurityException: attempting to add an object which is not an instance
    of java.security.Principal to a Subjec t's Principal Set Authentication Failed:
    Unexpected Exception, javax.security.auth.login.LoginExce ption: java.lang.SecurityException:
    attempting to add an object which is not an instance of java.security.Principal
    to a Subject's Principal Set javax.security.auth.login.LoginException: javax.security.auth.login.LoginExcepti
    on: java.lang.SecurityException: attempting to add an object which is not an ins
    tance of java.security.Principal to a Subject's Principal Set at examples.security.jaas.SampleLoginModule.login(SampleLoginModule.java
    :192) at java.lang.reflect.Method.invoke(Native Method) at javax.security.auth.login.LoginContext.invoke(LoginContext.java:595)
    at javax.security.auth.login.LoginContext.access$000(LoginContext.java:1 25) at
    javax.security.auth.login.LoginContext$3.run(LoginContext.java:531) at java.security.AccessController.doPrivileged(Native
    Method) at javax.security.auth.login.LoginContext.invokeModule(LoginContext.java
    :528) at javax.security.auth.login.LoginContext.login(LoginContext.java:449) at
    examples.security.jaas.SampleClient.main(SampleClient.java:96)
    1)what is the reason for this problem
    2)in weblogic document they told to edit server.policy file in webligic\lib folder
    a)what the modification is needed in this file..?

    Hi jerry
    i already got that problem solved by removing jaas.jar file
    from class path.
    i don'nt how it is working with out in classpath...?
    Jerry <[email protected]> wrote:
    Hi Nivas,
    I think that the problem you are seeing has something to do with the
    placement of jaas.jar in your classpath
    On WebLogic server, put jaas.jar in the classpath after weblogic.jar.
    I would bet that you have it placed before weblogic.jar right now.
    I don't think the exception that you're seeing right now has anything
    to do with your weblogic.policy file right now, so I think it is
    safe to not worry about it right now.
    Hope this helps,
    Joe Jerry

  • Can you determine a dragged objects Class Name when it is dropped?

    Is there a way to determine the class name for a dragged object.
    I have set up two objects. One is a JList that acts as a data source for the second object which is a JTable. Both objects serve as both drag source and drop targets. I need to be able to react to the following events:
    1. Drag value from JList to JTable.
    2. Drag value from JTable to JTable (itself) to reposition order.
    3. Drag value from JTable to JList (deletes item from JTable).
    So far, I have had no problem in getting #1 to work.
    The problem is determining how to consistently interpret which event is happening for 2 and 3. Both the drop (DropTargetDropEvent event) and the dragDropEnd (DragSourceDropEvent event) are fired for either 2 or 3 above. If I could identify the source class for the dragsource and the target class for the droptarget, the coding would be easy. I haven't been able to find anything on this while reviewing the API documentation.
    Any help would be appreciated.
    Thanks

    No, there are not multiple policies - the host names for all aliases on that single webserver are together in a single host identifier. And I realize I can only have a single challenge redirect, I just want to use a variable to redirect to the host name that was accessed as opposed to a static name.

  • How to create an instance of a class which is stored in a String?

    I've class name stored in a String Object.
    now i've to create an instance of that class name.
    How?

    This is very dangerous ground because you give up compile-time safety, but you can get a Class object using Class.forName(String). Then you can use methods of the class Class to operate on it (including creating an instance).

  • Best way to do a Object which holds a collection of another object type.

    I'm writing a caching object to store another object. The cache is only valid for a session, so I want a store the data in a nested table.
    I have try to simplify my example down to its core.
    How do I make this work and what is the best to index the index the items stored for fastest retrieval.
    CREATE OR REPLACE TYPE ty_item AS OBJECT (
    id_object VARCHAR2 (18),
    ORDER MEMBER FUNCTION compare (other ty_item)
    RETURN INTEGER
    CREATE OR REPLACE TYPE BODY ty_item
    AS
    ORDER MEMBER FUNCTION compare (other ty_item)
    RETURN INTEGER
    IS
    BEGIN
    IF SELF.id_object < other.id_object
    THEN
    RETURN -1;
    ELSIF SELF.id_object > other.id_object
    THEN
    RETURN 1;
    ELSE
    RETURN 0;
    END IF;
    END;
    END;
    CREATE OR REPLACE TYPE ty_item_store AS TABLE OF ty_item;
    CREATE OR REPLACE TYPE ty_item_holder AS OBJECT (
    CACHE ty_item_store,
    MEMBER FUNCTION get (p_id_object IN VARCHAR2)
    RETURN REF ty_item,
    MEMBER FUNCTION find (p_id_object IN VARCHAR2)
    RETURN REF ty_item,
    MEMBER FUNCTION ADD (p_id_object IN VARCHAR2)
    RETURN REF ty_item
    CREATE OR REPLACE TYPE BODY ty_item_holder
    AS
    MEMBER FUNCTION get (p_id_object IN VARCHAR2)
    RETURN REF ty_item
    IS
    rtn REF ty_item;
    BEGIN
    rtn := find (p_id_object);
    IF rtn IS NULL
    THEN
    rtn := ADD (p_id_object);
    END IF;
    RETURN rtn;
    END;
    MEMBER FUNCTION find (p_id_object IN VARCHAR2)
    RETURN REF ty_item
    IS
    rtn ty_item;
    BEGIN
    SELECT VALUE (ch)
    INTO rtn
    FROM CACHE ch
    WHERE ch.id_object = p_id_object;
    RETURN rtn;
    END;
    MEMBER FUNCTION ADD (p_id_object IN VARCHAR2)
    RETURN REF ty_item
    IS
    item ty_item;
    BEGIN
    item := ty_item (p_id_object);
    INSERT INTO CACHE
    VALUES (item);
    END;
    END;
    /

    Best way to do a Object which holds a collection of another object type. The best place for data in a database is.. no real surprise.. in tables. If that data is temporary of nature, global temporary tables cater for that.
    Storing/caching data using PL/SQL requires very expensive private process memory (PGA) from the server. This does not scale.
    I'm writing a caching object to store another object. Irrespective of how l33t your haxor skillz are, you will not be able to code as a sophisticated, performant and scalable PL/SQL data cache, as what already exists (as the database buffer cache) in Oracle.
    The cache is only valid for a session, so I want a store the data in a nested table.Not sure how you take one (session local data) to mean the other (oh, let's use a nested table).
    Session local data can be done using PL/SQL static variables. Can be done using name-value pairs residing in a context (Oracle namespace). Can be done using a global temporary table.
    The choice is dependent on the requirements that need to be addressed. However, the term +"caching+" has very specific connotations that say that a global temporary table is likely the best suited candidate.

  • To find out the object which called a method

    Hi all,
    Is there any way to findout the object which called a class method.
    The object name is required inside the method.
    Thanks in advance,
    Sreekanth

    Hi Sreekanth,
    You can do it by reading the CALL STACK.
    At the beginning of your method put the following code:
    data:
        begin of stackItem,
          program        type SYREPID,
          include        type SYREPID,
          line           type i,
          eventtype(12)  type c,
          event(70)      type c,
          flag_system(1) type c,
        end of stackItem,
        stack like standard table of StackItem.
      call 'ABAP_CALLSTACK' id 'DEPTH' field 2 id 'CALLSTACK' field stack.
      read table stack into stackitem index 2.
      MEssage i002(sy) with stackitem-program.
    Here stackitem-program is the calling program.
    Cheers,
    Aditya

  • Is it possible to get object type name  with help of key field?

    can any one tell me is it really possible to get the object type name if i have only key field,
    are there any tables which store the object type names & keyfield.  or there are any functionmodue which gives object type name by entering keyfield.

    Hello,
    If the PO has workflows associated with it, there is a table SWIWIOBJCT which stores details of the workitem, object key , object type details.
    If you input the object key to this table ( For ex: PO number in this case) , it will give you the corresponding object type for the object key for Workitem type F.
    Thanks,
    Sowmya Arni

  • How to get object which is created previously?

    Hi ,
    My question is that how to get reference of the object which is created previously using reflection API.
    that means,
    suppose i created one instance of class : ABC
    Class classAbc = Class.forname("ABC"); //load the class ABC.
    Object abcClassObject =classAbc.newInstance(); // create an instance of classABC.
    now how do i retrieve that object which is referred by ref. variable abcClassObject?
    expecting a favourable reply,
    Thanks & regards ,
    Swapnil

    My question is that how to get reference of the object which is created previously using reflection API.
    Object abcClassObject =classAbc.newInstance(); // create an instance of classABC.
    now how do i retrieve that object which is referred by ref. variable abcClassObject?abcClassObject is already a reference to it. Just use it. Nothing further required.

  • It is showing as error *Instance of object type PO could not be changed*

    HI Gurus,,
    i have requirement in PO Change IDOC , i have tested this IDOC .. but it is showing in Status record as error Document is does not exist
    and in Segmentheader for E1BPMEPOHEADER ..it is showing as error Instance of object type PO could not be changed
    SEGMENT NAME : E1BPMEPOHEADER
      PO_NUMBER
      COMP_CODE
      DOC_TYPE
      CREAT_DATE
      VENDOR
      PURCH_ORG
      PUR_GROUP ;;;
    we have entered related entries in it ...
    am uanble to find out where is porblem lies in it... plz help ASAP ...
    Thanks in advance..

    HI srinivas
    "It seems a data issue, Similar PO might be changed already and thus in SAP it is not allowing to change.
    So try changing the test data and post the IDOC again , it will change the PO . "
    yes we have entered the PO create and PO change .. where in PO change we have changed only QUANTITY and DATE .
    and showing this error" *It is showing as error Instance of object type PO could not be changed. "*
    Thanks in advance.

  • Know the created info objects which are used in which info providers.

    Hi Experts,
    How can we know the zinfo objects which are used in which info providers.

    Hi,
    Either you can check the where used list of Infoobject as suggested by Gaurav, or you can goto transaction SE16 and put the table name as RSDCUBEIOBJ and put the Infoobject name.
    You will get the list of all Infoproviders in which the infoobject is used.
    Regards,
    Durgesh.

  • The difference between class, instances and object?

    I've been reading a JAVA book and i've come accross terms such as class, instances and object. What I don't understand is why after creating a class, we have to create an object and then create instances? What's an object and instance anyway? I don't really understand the term. Can anyone pls help and explain it to me in an easier way to understand?
    Thanks a lot.

    A Class defines what attributes (properties) and methods a particular item will have.
    Ex. You have a class person
    public class Person
    public void walk()
    String name;
    int age;
    }An instance and Object are the same. When you create an instance of a class, you get an object of that class.
    Person kevonline = new Person();You can then set kev's name, age, make him walk, etc... since these are defined in the class Person.
    HTH,
    Dewang

  • Object class name does not exist in IDM

    Hi Team
    We are process of Integrating GRC 10.1 to Enterprise Portal.Followed accordingly as per the SAP Note No. 1977781.
    While running the Schema Job, we get a message Schema Imported Suxcessfully. While running the Job : GRAC_REPOSITORY_SYNC_JOB, the job
    shows successful, but a Warning Message : User Adaptor Empty in SLG1 T.code.
    I have checked the Path suffix,connectors,data source and all are maintained but no sure about this warning message.
    Secondly,I tried for test creation of user on Portal via GRC 10.1.I am getting below error
    "Object class name does not exist in IDM" Please see log below
    Request gets closed stating Auto Provisioning failed.Please advice if someone has faced same issue and the steps taken to rectify it.
    Thanks
    Nitesh

    Hi Nitesh,
    We worked on this issue for quiet sometime with SAP to get this finally fixed You can check all below mentioned notes.
    First Check:
    Please check the Note: 1915763 - Error Provisioning from GRC 10 to SAP Portal while adding or removing a role in Change Account request type.
    This Note says that if your LDAP set as data source is read-only in Portal, then you need to change it to Modifiable in order to allow create or change user belonging to LDAP.
    We have set the UME correctly and no longer read-only. But our access requests still used to fail with the following messages.
    "Object class name does not exist in IDM".
    Second Check:
    Kindly ensure the field mapping for portal is done in IMG settings properly.
    If it is fine please check below note 2033714 - AC10.0: error in SGL1 "Object class name does not exist in IDM".
    This note is only to check if you have made any mistake with your portal mapping and doesn't address the correct issue.
    Third Check:
    Finally after implementing SAP note 1941250 - UAM: Truncated parameters provisioned on changing users from Access Request
    our issue got fixed.
    Regards,
    Madhu.

  • Can I create a lot of instance with the same name?

    I have, for a project in my studies, to create a map for an adventure game. I must create monsters on this map. For this I use a class that I called Creature. In my class Map i have to initialise the monsters but I
    choose their quantity with Math.random() so I don't know how much the map will contain. If in a loop I do: Creature monster = new Creature(); will I have different instances with the same name(I doubt)? Will I have one monster re-created in each iteration of the loop? How can I do to have different monsters in different places (my map is a matrix 2x2)?

    You would have many Creature references made, but only one variable to hold them, and it would go out of scope outside your loop. You could create a Creature array or use a List (both defined outside your loop) - as
    // array
    int numCreatures = randomGeneratedCreatureQuantity();
    Creature[] monsters = new Creature[numCreatures];
    for (int j = 0; j < numCreatures; j++) {
        monsters[j] = new Creature();
    // Or a list
    int numCreatures = randomGeneratedCreatureQuantity();
    ArrayList monsters = new ArrayList();
    for (int j = 0; j < numCreatures; j++) {
        monsters.add(new Creature());
    }Good luck
    Lee

Maybe you are looking for