-
Java对象关联靠字段引用实现,一对一用单个对象字段,一对多用集合字段,多对多双方均持集合或引入中间实体;getter/setter不建立关联,关键在字段是否真实赋值;依赖、聚合、组合仅语义不同,代码层面均为字段持有。
-
排查JAX-WS(尤其是CXF)泛型故障的关键是:泛型运行时擦除导致WSDL类型定义缺失或分片,需检查wsdl:import是否因targetNamespace不一致引发分片、统一接口与实现类的@WebServicetargetNamespace、避免裸泛型而改用包装类或数组,并通过SoapUI验证类型解析有效性。
-
Java程序入口点必须是publicstaticvoidmain(String[]args),其中public、static、void、main和String[]args缺一不可;其他等效写法虽合法但不推荐,常见错误包括缺少static、返回类型非void、参数类型或数量错误等。
-
CMMException是Java2D中因颜色管理失败抛出的运行时异常,非处理工具,常由ICC文件损坏、颜色空间不兼容、缺失CMM实现等引发,需捕获并针对性降级或预校验。
-
Java中实现线程同步锁的核心目的是保证多线程访问共享资源时的数据一致性和线程安全,主要通过synchronized关键字、ReentrantLock、volatile关键字及Condition条件变量等方式实现;其中synchronized用于方法或代码块的自动加锁,ReentrantLock提供可中断、可重入、超时获取等更灵活的显式锁控制,volatile确保变量可见性但不保证原子性,适用于状态标志场景,而Condition配合ReentrantLock可实现精准线程通信;选择同步方式需根据实际需求权
-
优先选择组合而非继承,因继承导致类耦合紧、脆弱基类问题频发;组合通过接口隔离依赖,提升可替换性与可测性,且避免状态泄露;接口default方法不可替代继承,仅适用于无状态逻辑。
-
包装类用于将基本类型转为对象,支持自动装箱拆箱、字符串与数值转换及类型间转换。Java为每种基本类型提供对应包装类,如Integer、Double等,位于java.lang包。自动装箱允许基本类型直接赋值给包装类变量,反之则为拆箱。字符串转基本类型用parseXxx()方法,如Integer.parseInt("123");转包装类对象可用valueOf(),该方法对-128~127的Integer值有缓存优化。基本类型转字符串可通过String.valueOf()或toString()方法。数值类型间转
-
匿名内部类访问局部变量必须为final或effectivelyfinal,根本原因是栈帧销毁后局部变量不复存在,而内部类对象仍存活;编译器将其值快照为隐式字段存入堆中,故需确保值不变。
-
parallel()并非调用即并行,实际执行取决于ForkJoinPool.commonPool()线程可用性及数据源是否支持高效分割(如ArrayList可、LinkedList不可);常见错误包括共享变量非原子操作、forEach无序不安全、未预热导致性能误判,优化关键在确认其真比串行快且无竞态。
-
Future不触发get()的常见原因有三:线程池已关闭导致任务被拒绝;CachedThreadPool中快速任务被误判为未执行;Runnable提交后get()恒返回null。
-
ArrayList底层基于Object[]数组实现,非链表或哈希结构;初始化为空数组,首次添加时分配默认容量10;支持O(1)随机访问,末尾插入均摊O(1),中间插入最坏O(n);扩容按1.5倍增长,依赖Arrays.copyOf()拷贝;因泛型擦除使用Object[]存储,get()返回值由编译器自动强转;modCount用于fail-fast机制,校验单线程下迭代器误用,不保证线程安全。
-
Maven支持深度嵌套的多模块结构(如architecture→architecture_utils→architecture_utils_io),只需正确配置父POM的<modules>和子模块的<parent>关系即可实现;但需警惕过度拆分带来的构建复杂度上升与依赖管理负担。
-
Java不提供LoadLoad/StoreStore关键字,它们是JVM根据synchronized、volatile或Unsafe.loadFence()等语义在汇编层插入的内存屏障,具体实现依赖CPU架构。
-
BigDecimal构造应避免double参数,须用String或valueOf;四则运算必须调用add、subtract等方法;比较大小唯一可靠方式是compareTo;setScale和divide需按业务选RoundingMode,货币标度通常为2。
-
CodeCache满时JIT编译器被硬性禁用而非停顿:达到-XX:ReservedCodeCacheSize上限后,JVM立即停止所有新方法的JIT编译并输出禁用日志,已编译代码仍执行,新热点全部退至解释执行,性能下降5–10倍。