在generics类中创建generics方法名称?

目前,我有这样的事情: –

public class MyHolder { private T value; public MyHolder(T t) { this.value = t; } public T getValue() { return first; } public void setValue(T t) { this.first = t; } } 

有了这个,我可以像这样使用它: –

 MyBean bean = new MyBean(); MyHolder obj = new MyHolder(bean); obj.getValue(); // returns bean 

而不是将getter / setter调用为getValue()setValue(..) ,是否也可以“生成”?

从本质上讲,将getMyBean()setMyBean(..)放在一起会很好,具体取决于传入的类型。虽然这是一个非常简单的例子,但是如果我创建一个带有N个generics属性的generics持有者类,那么它将它称为有意义的东西而不是getValue1()getValue2()等等会很高兴。

谢谢。

不。在Java中没有这样的function。 我甚至无法想象它在语法上会是什么样的…… void set(); ? 例如, MyHolder的getter / setter怎么样MyHolder MyHolder看?

不,除非您使用某种源代码生成器根据您的输入生成MyHolder类,否则它是不可能的。

但另一方面,即使你有这种可能性,它与使用Map有何不同? 所以调用会读取:

 MyBean bean = new MyBean(); MyHolder obj = new MyHolder(bean); obj.get('value'); 

不,不可能。 Javagenerics基于类型擦除,即它主要是编译器提供的语法糖。 这意味着每个generics类实际上是由“原始类型”实现的,其中类型参数是Object ,并且已经包含所有方法。 因此,根据类型参数,根本不可能有不同的方法。