【发布时间】:2009-04-18 12:26:37
【问题描述】:
我有一个带有内部类 C 的 Java 类 B。B 的某些方法接受 C 的实例作为参数,但我只想接受由 B 的正确实例创建的 C 实例。有没有办法进行此验证在编译时?
示例
C c1 = new C();
B foo = c1.getB(); // foo was created by instance c1
C c2 = new C();
c2.method(foo); // I want a compiler error here.
我的情况
有一个类名 Map,它包含内部类 MapArea 的实例矩阵。这个方案的好处是我可以在构造函数中验证 xPos 和 yPos 字段,因此不会构建给定地图的无效区域。地图作为方法 distanceFrom(MapArea startingPos, MapArea toLocation, MapArea... otherLocations) 我试图避免再次验证地图区域参数。
【问题讨论】:
-
C c1 = new C(); B foo = c1.getB() C c2 = 新 C(); c2.method(foo) // 我这里要编译错误。
-
所以您说的是拥有多个外部 (B) 对象,每个对象可以创建多个内部 (C) 对象,但某些 C 对象方法必须只接受创建它们的 B?我不知道你将如何在编译时做到这一点。您正在谈论更多关于运行时层次结构。我能看到你可以做到这一点的唯一方法是用它的父级(创建它的 B)标记每个 C,然后在运行时使用断言以某种方式验证它。编译器可能帮不了你。
-
看更多你的例子:简短的回答,不。编译器无法根据需要进行验证。
-
我可以请您将其放入您的答案中以便我标记它吗?
-
你到底为什么要这样做?
标签: java validation