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

Ruthvik
  • 790
  • 5
  • 28
  • 2
    Does this answer your question? [Create Fields and methods dynamically](https://stackoverflow.com/questions/18275360/create-fields-and-methods-dynamically) – Aris Oct 22 '21 at 14:51
  • I not only want to add properties like that but methods also. – Ruthvik Oct 22 '21 at 14:55
  • 1
    It is not possible in java to do that, maybe by altering byte code which is not recommended. – Aris Oct 22 '21 at 15:00

1 Answers1

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

Aris
  • 984
  • 8
  • 22