Why can't I have a UObject Reference as a UFunction Parameter?

I was trying to write a UFunction that takes a UObject reference as a parameter and realized it won’t compile.

Example

.h
UFUNCTION()
	void Reference_Parameter(UPARAM(ref) UObject& reference);

.cpp
void ATestFunction::Reference_Parameter(UPARAM(ref) UObject& reference)
{
	UE_LOG(LogTemp, Warning, TEXT("Function Called"));
}

This lead me to realize that I must be missing fundamental UObject knowledge.

Can someone please attempt to provide clarification/understanding?

Thank you.

You should reference UObjects as pointers and not as reference.

UObject* MyObject

Since UObjects are garbage collected by the engine, it would destroy the object and set these pointers automatically to null when they are no longer referenced, hence the need for a pointer enforcement

Yes pointers are what I ended up using. This makes sense, thank you.