This situation is called a Circular Dependency, and yes you should avoid it. At least if you know you can avoid them, do it.
edit:
There are many reasons to why you should avoid them.
The first one is that some languages (If I remember that has already happened to me in C#), you won't be able build modules with circular dependencies. (whoops)
The second one is that it tells me that the quality of the code can be better. Why? Because it usually shows signs of tight coupling, which makes your code less re-usable.
Also, in your example, it's not the case (because you used static methods), but when you want to create those objects, it'll be hard. Especially if you're using dependency injection.
More reasons are listed here
Circular dependencies can cause many unwanted effects in software
programs. Most problematic from a software design point of view is the
tight coupling of the mutually dependent modules which reduces or
makes impossible the separate re-use of a single module.
Circular dependencies can cause a domino effect when a small local
change in one module spreads into other modules and has unwanted
global effects (program errors, compile errors). Circular dependencies
can also result in infinite recursions or other unexpected failures.
Circular dependencies may also cause memory leaks by preventing
certain very primitive automatic garbage collectors (those that use
reference counting) from deallocating unused objects.