Как создать функцию которая может принимать любые типы переменных?
Примерно так:
<T> void genericMethod(T argument) {
        // argument extends object
        System.out.println(argument);
    }
т.к. не понтяно какой тип будет у аргумента, он будет обладать только свойствами Object

<T extends SomeType> void someMethod(T argument) {
        System.out.println(argument);
    }

    abstract class SomeType implements SomeInterface {
    }

    interface SomeInterface {
        //TODO :: some methods
    }
Можно указать, что аргумент наследуют к.л. тип и тогдаможно вызывать методы этого типа.
В полной мере union-типы реализованы в Scala. Поэтому тебе надо сменить язык чтобы работать
на таком уровне выразительности своей идеи.

Например вот функция которая конвертит дату-время для строки или для лонг-типа.
def convertTime(time : String | Long) : String = 
  ....

В Java есть вариант - передать базовый типп Object и в теле функции проверять instanceOf и делать
соотв. conditions или паттерн матчинг по типу. 
String convert(Object object) {
   ......
}
Вобщем все варианты требуют явного перечисления логики которую ты хочешь сделать. 

Или ты хотел как-то "схитрить" и не писать логику?