Complete method dynamicClassPrintForecast()

Report a typo

Please complete method dynamicClassPrintForecast(). This method dynamically creates a new class using the ByteBuddy library and intercepts a specific method within that class. To accomplish this, you need to create two additional variables: dynamicClass of type Class and instance of type Object.

import net.bytebuddy.ByteBuddy;
import net.bytebuddy.dynamic.DynamicType;
import net.bytebuddy.dynamic.loading.ClassLoadingStrategy;
import net.bytebuddy.implementation.MethodDelegation;

import java.lang.reflect.Method;

import static net.bytebuddy.matcher.ElementMatchers.named;
import static net.bytebuddy.matcher.ElementMatchers.takesArguments;

public class ForecastDynamicClass {
    public String dynamicClassPrintForecast() throws Exception {
        DynamicType.Unloaded<?> dynamicType = new ByteBuddy()
                .subclass(WeatherCondition.class)
                .method(named("printWeatherForecast").and(takesArguments(1)))
                .intercept(MethodDelegation.to(WeatherCondition.class))
                .make();

        Class<?> dynamicClass = ...
        Object instance = ...

        Method m = dynamicClass.getMethod("printWeatherForecast", String.class);
        return m.invoke(instance, "rain").toString();
    }
}

class WeatherCondition {
    public static String printWeatherForecast(String forecast) {
        return "Today is expected " + forecast;
    }
}
Select one or more options from the list
___

Create a free account to access the full topic