Динамический вызов статического метода без использования отражения - PullRequest
0 голосов
/ 12 февраля 2019

Скажем, у меня есть что-то вроде этого:

public class Entity<T> {

  public Class<T> model;

  public Entity(Class<T> m){
    this.model = m;
  }

}

, поэтому мы используем его как:

var ent = new Entity<String>(String.class);

, но я не могу позвонить:

ent.model.format() 

или

ent.model.join()

и т. д.Ни один из статических методов не доступен в этом случае.Есть ли способ вызвать эти статические методы без использования отражения?

1 Ответ

0 голосов
/ 12 февраля 2019

Похоже, что вы хотите связать тип с атрибутом в вашем классе Entity, для которого в идеале вы можете использовать следующий подход:

class Entity<T> {
    public T model;
    public Entity(T m) {
        this.model = m;
    }
}

, который затем можно создать как:

var ent = new Entity<>(""); // T is inferred based on the attribute type in the c'tor call
// or also  explicitly specified as
var ent = new Entity<String>(""); //redundant though 

, а затем использовать его как:

ent.model.format(""); // in this example 'model' is a 'String' with empty value ""
...