可以。 Java 方法參數列表允許聲明多個不同類型的參數,數量無語言層面限制(受 JVM 方法描述符長度限制,實際極大)。
public void complexMethod(
String name,
int age,
User user,
List<Order> orders,
Map<String, Object> config,
Runnable callback,
MyCustomType... varargs // 可變參數本質是數組
) { ... }
public class QueryParams {
private String keyword;
private int page, size;
private List<String> tags;
// getter/setter/builder
}
public Result search(QueryParams params) { ... }
Type... args 僅能出現在參數列表最後,內部為數組,調用時可傳 0~N 個同類型參數。Runnable、Consumer<T>、Function<T,R> 等標準函數式接口,配合 Lambda 極度簡潔。JVM 方法描述符格式:(参数类型描述符)返回类型描述符,如 (ILjava/lang/String;Ljava/util/List;)V。類文件常量池存儲完整簽名,調用指令 invokevirtual/invokestatic 根據描述符綁定參數槽位,類型安全由編譯器與校驗器保證。
結論:語法上完全支持,工程上講究「高內聚、低耦合」,善用參數對象、Builder、函數式接口提升可讀性與可維護性。