Tag: 界面

我可以限制另一个类可以在Java中调用的方法吗?

假设我有类A , B和C ,其中类C具有可读写属性: public class C { private int i = 0; // Writable. public void increment() { i++; } // Readable. public int getScore() { return i; } } 是否可以只让A使用increment()方法,只让B使用getScore()方法?

在Java中,当一个接口扩展另一个接口时,为什么要重新声明子接口中的方法?

我一直在从J2EE中查看JMS API,并发现了一个奇怪的行为,其中在接口中声明的某些方法(例如,Session中的createQueue)在子接口(例如QueueSession)中再次声明,并且具有相同的文档。 由于子接口“inheritance”它inheritance的接口的所有方法声明,并且由于JavaDoc工具在排序子接口的JavaDocs并创建“inheritance的操作”列表时没有问题,因此我无法弄清楚它实现了什么。 唯一的想法是,最初调用是在Session中,然后在创建特定子类时移动到QueueSession,尽管那时我希望在大写的文档中看到一些东西。 但这只是猜想。 所以问题是:是否有令人信服的理由在子接口中重新声明方法?

Java中的接口 – 它们用于什么?

可能重复: 接口的目的仍在继续 我不久前就开始学习Java了。 我遇到过Interfaces ,我知道如何使用但仍然无法完全掌握它的想法。 据我了解, interfaces通常由类实现,然后必须实现接口中声明的方法。 问题是 – 究竟是什么意思? 从接口实现方法作为普通类方法不是更容易吗? 使用接口的优势究竟是什么? 我试过在谷歌上寻找答案。 有很多,但我仍然无法理解它的意义。 我也读过这个问题及其答案,但整个合同的事情让它变得更加复杂…… 希望有人可以简化它! 🙂 提前致谢!

Java将对象转换为未实现的接口

我在学习书中发现了以下问题,有点困惑: 给定以下代码,如果用于替换/* INSERT CODE HERE */ ,哪个选项将启用Roamable类型的引用变量来引用Phone类的对象? (选择1个选项。) interface Roamable{} class Phone {} class Tablet extends Phone implements Roamable { //INSERT CODE HERE } 选项包括: Roamable var = new Phone(); Roamable var = (Roamable)Phone(); Roamable var = (Roamable)new Phone(); 由于接口Roamable和类Phone不相关,因此Roamable类型的引用变量不能引用Phone类的对象。 我认为正确的选项是4,但它说它是3。 但是, Phone并没有实现Roamable接口,所以你不能施展,可以吗?

接口上用于强制一致性的静态方法的替代方法

在Java中,我希望能够定义标记接口,强制实现提供静态方法。 例如,对于简单的文本序列化/反序列化,我希望能够定义一个如下所示的接口: public interface TextTransformable{ public static T fromText(String text); public String toText(); 因为Java中的接口不能包含静态方法(如许多其他post/线程所述: 这里 , 这里 , 这里代码不起作用。 然而,我正在寻找的是表达相同意图的一些合理范例,即对称方法,其中一种是静态的,并由编译器强制执行。 现在我们能想到的最好的是某种静态工厂对象或通用工厂,这两者都不是真正令人满意的。 注意:在我们的例子中,我们的主要用例是我们有许多“值 – 对象”类型 – 枚举,或者具有有限数量值的其他对象,通常不会超出其值,并且我们解析/ de -parse数秒钟的时间,所以实际上关心重用实例(如Float,Integer等)及其对内存消耗的影响/ gc 有什么想法吗? 编辑1:为了消除一些混乱 – 我们有许多不同的对象适合这种模式 – 实际上我们正试图为具有2个语义的调用者提供优雅的东西: 作为合同的接口 – 访问的统一性(例如TextTransformable作为一种能力) 要求通过子类/实现实现(例如强制它们实现自己的转换 就我们对Flyweight,Factories的看法而言 – 它们都是我们考虑过的选项,我们真的试图看看我们是否能找到更优雅的东西,而不是依赖于JavaDoc说“实现工厂并委托调用它,或按惯例在XXX地点公开“

抽象方法错误

我正在研究netbeans中的一个项目,当我使用glassfish 3.1.2启动它时。一切正常。但是当我调用映射到以下方法的/ invite url时 @RequestMapping(value = “/invite”, method = RequestMethod.POST) @ExceptionHandler(GenericException.class) public ModelAndView create(@ModelAttribute(value = “preRegister”) @Valid PreRegister preRegister, BindingResult result, HttpServletRequest request) { mav = new ModelAndView(); validator.validate(preRegister, result); List roleList = null; if (result.hasErrors()) { mav.setViewName(“user_populate_create”); try { roleList = roleDao.list(); } catch (Exception ex) { logger.error(“UserController: Unable to list Roles: “, ex); […]

Java接口方法:每个类应该实现一个接口吗?

我一直在Java中为大学的一些课程编程,我有以下问题: 从方法论上接受每个类应该实现一个接口吗? 不这样做被认为是不好的做法吗? 你能描述一下使用接口不是一个好主意的情况吗? 编辑:就个人而言,我喜欢将接口用作一种方法和习惯的概念,即使它不是明显有益的。 Eclipse自动创建了一个包含所有方法的类文件,因此它不会浪费任何时间。

Java因实现访问较弱的接口方法而出错

当我编译这段代码时: interface Rideable { String getGait(); } public class Camel implements Rideable { int x = 2; public static void main(String[] args) { new Camel().go(8); } void go(int speed) { System.out.println((++speed * x++) + this.getGait()); } String getGait() { return ” mph, lope”; } } 我收到以下错误: Camel.java:13: error: getGait() in Camel cannot implement getGait() in […]