зеркало из
				https://github.com/iharh/notes.git
				synced 2025-11-03 23:26:09 +02:00 
			
		
		
		
	
		
			
				
	
	
		
			33 строки
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			33 строки
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
    public static String bar(Integer n, int k) {
 | 
						|
        log.info("bar called");
 | 
						|
        return "do bar n:" + n + ", k=" + k;
 | 
						|
    }
 | 
						|
    public static String baz(Integer n, int k) {
 | 
						|
        return "do baz";
 | 
						|
    }
 | 
						|
 | 
						|
        ByteBuddyAgent.install();
 | 
						|
 | 
						|
        Method bar = App.class.getDeclaredMethod("bar", Integer.class, int.class);
 | 
						|
        //Method baz = App.class.getDeclaredMethod("baz");
 | 
						|
 | 
						|
        new ByteBuddy()
 | 
						|
            .redefine(Simple.class)
 | 
						|
            .method(named("tell"))
 | 
						|
            //.intercept(MethodDelegation.to(new TimingInterceptor()))
 | 
						|
            //.intercept(FixedValue.value("Hello Foo Redefined"))
 | 
						|
            .intercept(
 | 
						|
                MethodCall.invoke(bar)                 // call bar()...
 | 
						|
                //.andThen(MethodCall.invoke(baz))  // ... .length()?
 | 
						|
                .withAllArguments()
 | 
						|
            )
 | 
						|
            .make()
 | 
						|
            .load(
 | 
						|
                Simple.class.getClassLoader(), 
 | 
						|
                ClassReloadingStrategy.fromInstalledAgent()
 | 
						|
            );
 | 
						|
 | 
						|
        Simple simple = new Simple();
 | 
						|
        String ret = simple.tell(1, 2);
 | 
						|
        log.info("app finish: {}", ret);
 |