小编Chr*_*ena的帖子

使用toString()方法接受任何对象作为参数

我正在尝试创建一个方法,它可以接受各种类型的对象,对传入的任何对象执行toString,然后打印它.有时它会是一个int,有时是一个long,有时是一个字符串,有时候是一个自定义对象,等等.唯一的断言应该是它有一个toString()方法.基本上,我想模拟python的duck-typing,而不是每次使用该方法时都必须在此API之外调用toString().

这是现有的功能:

/**
 * Log a message at TEST level
 * @param message: The message to log
 */
public void test(String message) {
    log(Level.TEST, message);
}
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止试图增强它的方法:

/**
 * Log a message at TEST level
 * @param message: An object of any class that implements toString.
 */
public void test(Class<?> message) {
    String messageString = message.toString();
    log(Level.TEST, messageString);
}
Run Code Online (Sandbox Code Playgroud)

这似乎在语法上是正确的,但它没有给出我想要的东西:

Cannot resolve method 'test(int)'
Run Code Online (Sandbox Code Playgroud)

有没有一种在Java中实现此功能的合理方法?

java generics duck-typing

0
推荐指数
1
解决办法
696
查看次数

标签 统计

duck-typing ×1

generics ×1

java ×1