Android (Java) 如何导入并使用来自不同库的两个同名类?
不同库同名类导入冲突解决方案
Java不允许同时导入两个全类名不同但短类名相同的类,编译器无法识别使用时指向的具体类,因此会抛出你遇到的已定义报错,可通过以下两种方式解决:
- 方案1:按需选择高频使用的类做单类型导入,低频类使用全类名调用
比如你项目中org.joda.time.DateTime使用频率更高,仅导入该类即可,使用hirondelle.date4j.DateTime时补全包名:// 仅导入高频使用的joda DateTime import org.joda.time.DateTime; public class DateTest { public void testDate() { // 直接使用joda DateTime处理公历转伊斯兰回历逻辑 DateTime gregorianDt = new DateTime(); // 使用date4j DateTime处理日历单元格逻辑时补全完整包名 hirondelle.date4j.DateTime calendarCellDt = new hirondelle.date4j.DateTime("2024-05-20"); } } - 方案2:两个类均不做单类型导入,所有使用场景均写全类名
适合两个类使用频率相近的场景,完全避免歧义:// 不导入任何DateTime类 public class DateTest { public void testDate() { org.joda.time.DateTime gregorianDt = new org.joda.time.DateTime(); hirondelle.date4j.DateTime calendarCellDt = new hirondelle.date4j.DateTime("2024-05-20"); } }
内容的提问来源于stack exchange,提问作者Adam Lee
相关产品推荐
相关产品推荐

