gpt4 book ai didi

java - java中的动态方法返回类型

转载 作者:行者123 更新时间:2023-11-29 08:19:13 27 4
gpt4 key购买 nike

下面的代码完全符合我的要求,但我很好奇是否有更好的方法。如果接口(interface)允许静态方法,或者如果 Java 方法可以被泛化/参数化到它们在 C# 中可以达到的程度,这会容易得多。

我宁愿用参数“Class<TParsedClass> c”代替“Class<AbstractClass> c”。对我来说,“Class<AbstractClass>”表示一个扩展某个抽象类的类,但显然这是错误的,因为当我使用该参数并按上面描述的方式使用它时,我会遇到编译器错误。

public <TData, TParsedClass> TParsedClass convert(TData data, Class<TParsedClass> c)
{
try
{
return (TParsedClass)c.getMethod("parse", data.getClass()).invoke(c, data);
}
catch(Exception e)
{
e.printStackTrace();
return null;
}
}

最佳答案

是的,有更好的方法。使用接口(interface):

public interface Parser< TData, TParsedClass >
{
TParsedClass parse( TData data );
}

public class IntParser
implements Parser< String, Integer >
{
public Integer parse( String data )
{
return Integer.valueOf( data );
}
}

public <TData, TParsedData> TParsedData convert(
TData data,
Parser< TData, TParsedData > parser
)
{
return parser.parse( data );
}

关于java - java中的动态方法返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1663754/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com