0

In Javascript we can define an object like this 👇

let obj={
    property1:67,
    func1: function (){
        //Some code
    }
}

Now if we want add a new property to obj I can just add a new property like this

obj.property2=733; //some value or function

Now I want to do the same thing in Java also.

I have a class Test 👇

public class Test{
    int property1=67;
    public void func1(){
        //Some code
    }
}

Now is it possible to do like the same thing like statement #2 in Java also?

Edit: From the answers I got to know that we can use a Map for properties. Now I want to know for methods. Thanks

3
  • 2
    Does this answer your question? Create Fields and methods dynamically Commented Oct 22, 2021 at 14:51
  • I not only want to add properties like that but methods also. Commented Oct 22, 2021 at 14:55
  • 1
    It is not possible in java to do that, maybe by altering byte code which is not recommended. Commented Oct 22, 2021 at 15:00

1 Answer 1

1

So I did a research and as I can see this is not simple.

In java you can not do that, actually, you can if you provide your own custom class loading, which is really a bad idea because then even if you change the class you want you must reload all classes that interact with this class.

Check this article to understand more about class loaders.

Of course, there are some other ways as:

  • ASM an all-purpose Java bytecode manipulation and analysis framework.

  • Javassist a library for editing bytecodes in Java

  • AspectJ aspect-oriented extension to the Java, mostly used to clean modularization of crosscutting concerns

Sign up to request clarification or add additional context in comments.

1 Comment

Thank you I'll will surely check out.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.