Tag: 界面

仅与常量接口

最近我遇到了一段代码,其中我找到了一个只有常量的接口。 并且使用静态导入在类中访问这些常量。 常数更多(约30至50)。 就个人而言,我认为这不是一个好习惯。 这就是为什么它根据Effective Java被称为Constant Interface Antipattern。 我没有找到任何有理由去进行这种编码。 此外,仅当我们的应用程序中的许多类导入的常量很少时,才应使用静态导入。 谁能告诉我是否有任何其他充分的理由去寻找常数界面?

如何获取间接实现的通用接口的实际类型参数?

我有一个参数化的界面,以多种不同的方式实现。 在运行时,我需要弄清楚,给定一个实现该接口的任意对象,接口的实际类型参数是什么。 这里有一个片段来说明问题,并尝试解决它( 也在ideone.com上 ): import java.util.*; import java.lang.reflect.*; interface Awesome { } class Base implements Awesome<Set> { } class Child extends Base<List> { } class AwesomeExample { public static void main(String[] args) { Awesome<Set<List>> x = new Child(); System.out.println( ((ParameterizedType) Child.class.getGenericSuperclass() ).getActualTypeArguments()[0] ); // prints “java.util.List” System.out.println( ((ParameterizedType) Base.class.getGenericInterfaces()[0] ).getActualTypeArguments()[0] ); // prints “java.util.Set” […]

标准接口

我已经使用Java一段时间了,我一直听说过Cloneable , Iterable和其他X- able等Iterable 。 我想知道是否所有这些都有一个列表,更重要的是 – 你经常使用哪些日常用途? 例如,我已经读过Cloneable被认为编写得很糟糕并且没有被广泛使用。

jacksonJSON,不可变类和接口

我正在使用Jackson示例,并且在使用不可变类和接口进行反序列化时遇到一些麻烦。 以下是我的代码: package com.art.starter.jackson_starter; import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.jackson.map.JsonMappingException; import org.codehaus.jackson.map.ObjectMapper; /** * Hello world! * */ public class App { public static void main( String[] args ) throws JsonGenerationException, JsonMappingException, IOException { System.out.println( “Hello World!” ); AddressImpl.AddressBuilder builder = new AddressImpl.AddressBuilder(); NameImpl.Builder nameBuilder = new NameImpl.Builder(); UserImpl.Builder userBuilder = […]

设计决策:为什么以及何时将接口设为私有?

私有接口是否曾用于设计决策? 如果是这样,原因是什么,何时知道需要私有接口?

Java RMI – UnicastRemoteObject:UnicastRemoteObject.exportObject()和扩展UnicastRemoteObject()有什么区别?

我正在准备考试,我有一个问题,我希望有人能回答我。 它关于RMI和远程对象。 我想知道为什么这两个实现之间存在很大差异。 一个是扩展UnicastRemoteObject而另一个是将对象导出为UnicastRemoteObject。 我真的没有区别 – 顺便说一下,这只是一个快速而肮脏的例子:-) 接口: public interface EchoI extends Remote { public String echo() throws RemoteException } 这是服务器代码(版本1): public class EchoImpl extends UnicastRemoteObject implements EchoI { public EchoImpl { super(); } public static void main (String[] args) { try { LocateRegistry.createRegistry(Registry.REGISTRY_PORT); StoreHouse storehouseImpl = new StorehouseImpl(); Naming.rebind(“//localhost/StoreHouse.SERVICE_NAME”, storehouseImpl); System.out.println(“Server ready”); } catch […]

使用接口有什么好处

假设你有一个界面 public interface Change { void updateUser(); void deleteUser(); void helpUser(); } 我已经读过接口是Java实现多重inheritance的方式。 您实现了一个接口,然后您可以访问其方法。 我不明白的是,这些方法在界面中没有任何主体,所以你需要在课堂上给它们一个主体。 因此,如果您的接口由多个类实现,则需要在多个类中为该方法提供一个主体。 为什么这比在类中使用单独的方法更好,而不是实现接口?

Java通用接口与类型安全实现

我正在寻找从通用框架调用特定接口的好方法。 我将用代码举例说明。 查看问题部分 ,示例代码主要包含在内,以便彻底,并将示例放入真实场景中。 例 假设我们想要基于组件列表构建报告。 假设我们有两种特定的组件类型: public interface Component { … } public class PDFComponents extends Component { … } public class WordComponents extends Component { … } 每个组件都有一个ReportBuilder实现,例如, public interface ReportBuilder { … } public class PDFReportBuilder extends ReportBuilder { … } public class WordReportBuilder extends ReportBuilder { … } 其中构建特定的报告实现 public interface […]

Scala无法解析inheritance的Java接口常量成员

Java中的类层次结构: 接口: 集群 , 分类 Kluster类层次结构如下所示 Cluster <- , +– Kluster Classify <- ' 文件: oop / Cluster.java package oop; public interface Cluster { public String HELLO = “hello”; } 文件: oop / Kluster.java package oop; interface Classify { public String GOODBYE = “good bye”; } public class Kluster implements Cluster, Classify { } 文件: […]

三合会没有出现在战斗中? (Java设置缺少一个项目)

我有来自两家公司asoft和bsoft的代码。 我也无法改变。 这是我的情况的简化版本,我非常确定有足够的信息来查找导致问题的原因。 bsoft提供IGang ,代表一个可以与其他帮派作战的团伙。 package bsoft; public interface IGang { /** @return negative, 0, or positive, respectively * if this gang is weaker than, equal to, or stronger * than the other */ public int compareTo(IGang g); public int getStrength(); public String getName(); public void attack(IGang g); public void weaken(int amount); } asoft提供GangWar ,允许IGang进行战斗: […]