genericos – Uso de métodos estáticos en un Interface Java con genéricos (operador diamante)

Estoy creando un CRUD con varias implementaciones. Para ello tengo una clase Categoria, una interfaz RepositorioI y una implementación de la interfaz CategoriaRepositorioLista (la idea es hacer diferentes implementaciones, tanto con listas, Bases de Datos tradicionales e Hibernate).

Hasta la fecha tenía la interfaz parametrizada con el operador diamante hacia el tipo del modelo, y los métodos como método de instancia. Luego pensé que, realmente, no tengo necesidad de crear una instancia de la implementación del repositorio porque no voy a utilizar atributos de instancia.

Si tengo un atributo, va a ser estático pues sólo lo voy a utilizar a nivel de clase. Lo que pase a los métodos o me devuelvan estos no se va a almacenar internamente.

La interfaz originalmente tenía este aspecto:

RepositorioI.java

package com.anubedam.repositorio.interfaces;

import java.util.List;

public interface RepositorioI<T> {
    /* Repositorio con las operaciones CRUD */
    
    // Guardar el modelo
    void guardar(T modelo);
        
    // Recuperar un modelo por su id
    T buscarPorId(long id);
    
    // Recuperar todos los modelos
    List<T> buscarTodos();
    
    // Borrar el modelo
    void borrarPorId(long id);    
    
    // Borrar todos los modelos
    void borrarTodos();  
}

El problema es cuando decido hacer los métodos de la interfaz estáticos.

package com.anubedam.repositorio.interfaces;

import java.util.List;

public interface RepositorioI<T> {
    /* Repositorio con las operaciones CRUD */
    
    // Guardar el modelo
    static void guardar(T modelo);
        
    // Recuperar un modelo por su id
    static T buscarPorId(long id);
    
    // Recuperar todos los modelos
    static List<T> buscarTodos();
    
    // Borrar el modelo
    static void borrarPorId(long id);    
    
    // Borrar todos los modelos
    static void borrarTodos();  
}

El error que me está dando, en todos los métodos, es

non-static type variable T cannot be referenced from a static
context

Es decir, que el tipo que se asocia con la interfaz es a nivel de instancia y en principio no puedo utilizar métodos estáticos con el operador diamante.

Realmente lo que yo quiero hacer es evitar el uso de tipo Object y tener que preguntar si es una instancia de tal clase o de otra y hacer casteos.

No pongo la clase del modelo ni de la implementación de la interfaz porque de lo que realmente se está quejando es de la interfaz.

¿Cómo podría hacerlo en este caso? He estado buscando por internet y no he encontrado cómo poder resolver este problema.

Muchas gracias,