Sometimes you're making an Editor Utility and you find that you can't access the default variables of arbitrary class or a component inside it. Maybe this'll help, from Ryan.
Ryan DowlingSoka:
If you are at runtime you gotta do it by class and you gotta expose it to code. but it's code every project should have.
You can use Get Class Defaults I think if it isn't a runtime class check, like if it is a static class.
UObject* UYourBlueprintLibrary::GetDefaultObject(UClass* Class)
{
    if (!IsValid(Class)) return nullptr;
    return Class->GetDefaultObject<UObject>();
}
But in editor scripting you want this:

UObject* URedTechArtToolsBlueprintLibrary::GetDefaultObjectFromBlueprint(const UObject* Blueprint)
{
    if(!IsValid(Blueprint)) return nullptr;
    
    const UBlueprint* BlueprintObj = Cast<UBlueprint>(Blueprint);
    if(IsValid(BlueprintObj))
    {
        if(IsValid(BlueprintObj->GeneratedClass))
        {
            return BlueprintObj->GeneratedClass->GetDefaultObject();
        }
        
        FName ClassName;
        FName SkeletonClassName;
        BlueprintObj->GetBlueprintCDONames(ClassName, SkeletonClassName);
        return FindObject<UObject>(nullptr, *ClassName.ToString());
    }
    
    if(IsValid(Blueprint->GetClass()))
    {
        return Blueprint->GetClass()->GetDefaultObject();
    }
    
    return nullptr;
}
UFUNCTION(BlueprintCallable, Category = EditorScripting)
    static UObject* GetDefaultObjectFromBlueprint(const UObject* Blueprint);