Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
137 views
in Technique[技术] by (71.8m points)

java - Generate an instantiable class based on a static class reflectively

Can I (using reflection I presume?) create a class with all the same method names as java.lang.Math and each method just forwards it to Math?

E.g.

public class MyMath {
  public MyMath() {}

  public double abs(double a) {
    return Math.abs(a);
  }

  public float abs(float a) {
    return Math.abs(a);
  }

  public int abs(int a) {
    return Math.abs(a);
  }

  ...

  public double acos(double a) {
    return Math.acos(a);
  }
  
  ...

How could I generate this programmatically?

question from:https://stackoverflow.com/questions/65937379/generate-an-instantiable-class-based-on-a-static-class-reflectively

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You can do this with reflection to get an instance of class Math:

try {
    Constructor[] cs = Math.class.getDeclaredConstructors();
    cs[0].setAccessible(true);
    Math m = (Math) cs[0].newInstance();
    //e.g.
    System.out.println(m.sqrt(16));
}
catch (Exception e) {
    e.printStackTrace();
}

Whether this is a sensible thing to do is another question.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...