有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java破解已实现方法的返回类型的最佳方法?

我通过maven依赖关系实现了一个服务,该依赖关系获取数据并在另一个虚拟位置吐出数据,前提是它符合严格的类型要求。但是,我已经调出了其中一个字段(让我们调用字段Buzz和我的实现Buzzer),我想知道是否可以将它与服务的其余部分一起使用

该服务是对工厂的调用,需要类型Buzz,而BuzzBuzzer之间的差异是一些额外添加的成员字段。我能做些什么使工厂接受Buzzer吗?通过查看代码,服务似乎没有做任何依赖于Buzz的hashcode是否正确的事情

编辑:示例

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是已定义的对象


共 (1) 个答案

  1. # 1 楼答案

    若你们能让蜂鸣器发出嗡嗡声,那个就太理想了

    但是,如果您不能(例如,如果它来自第三方库并声明为最终类),那么黑客解决方案将是“获取”一个Buzz实例(这将取决于特定场景)。需要更多信息才能更具体。然后通过反射修改其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
    }