在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 extends Number>
的getter / setter怎么样MyHolder extends Number>
MyHolder extends Number>
看?
不,除非您使用某种源代码生成器根据您的输入生成MyHolder
类,否则它是不可能的。
但另一方面,即使你有这种可能性,它与使用Map
有何不同? 所以调用会读取:
MyBean bean = new MyBean(); MyHolder obj = new MyHolder (bean); obj.get('value');
不,不可能。 Javagenerics基于类型擦除,即它主要是编译器提供的语法糖。 这意味着每个generics类实际上是由“原始类型”实现的,其中类型参数是Object
,并且已经包含所有方法。 因此,根据类型参数,根本不可能有不同的方法。