我正在通过maven依赖实现服务,该依赖会获取数据并将其吐出到另一个虚拟位置,前提是它符合严格的类型要求。但是,我已经换掉了其中一个字段(让我们调用字段Buzz
并执行它Buzzer
)并且想知道我是否可以将其与其他字段一起使用的服务。
该服务是对工厂的调用,需要类型Buzz
,而Buzz
和Buzzer
之间的差异是一些额外添加的成员字段。有什么办法可以让工厂接受Buzzer
吗?通过代码查看,该服务似乎没有做任何依赖于Buzz
正确的哈希码的事情。
编辑:示例
class Buzz
{
public String ID
public String name
public String title
public Iterable<profile> profiles
public myConstructor(String ID, String name, String title, Iterable profile)
{
this.var = var;
}
}
和
class Buzzer
{
public String ID
public String name
public String title
public profile profiles
public myConstructor(String ID, String name, String title, profile profiles)
{
this.var = var;
}
}
其中profile
是已定义的对象
答案 0 :(得分:1)
如果你可以让Buzzer扩展Buzz,那将是理想的。
但是如果你不能(例如,如果它来自第三方库并被宣布为最终类),那么黑客解决方案将是“获取”一个Buzz实例(这将取决于特定的scenareo。需要更多信息更具体)。然后通过反射修改其buzz属性。
这样的事情:
String buzz = null; // Assuming Buzz field is a string in this example
Field fBuzz = null;
try
{
Class<?> cBuzz = theBuzzInstance.getClass();
fBuzz = cBuzz.getDeclaredField( "buzz" );
fBuzz.setAccessible( true );
buzz = ( String ) fBuzz.get( theBuzzInstance );
String newBuzz = "Hacked!";
fBuzz.set( theBuzzInstance, newBuzz );
}
catch( Exception e )
{
// TODO: Error handling
}