草庐IT

abstraction

全部标签

java - 我可以编写一个遍历集合和数组的 for 循环吗?

是否有可能检查一个对象是数组还是带有一个子句的集合?我想要达到的目标:假设数组实现Iterable,并且假设Objectfoo可以是数组或集合,我想使用这样的代码片段:if(fooinstanceofIterable){for(Objectf:(Iterable)foo){//dosomethingwithf}}不幸的是,数组不能转换为Iterable。它也没有实现Collection。是否有任何其他可能性可以像上面那样在一个循环中处理两者?而不是-当然-使用if-elseif-clause和两个循环(这不太好)。编辑:针对这些答案。我知道isArray()方法,但在这种情况下是强制转

java - 我应该什么时候返回接口(interface),什么时候返回具体类?

当我用Java编程时,出于习惯,我几乎总是写这样的东西:publicListfoo(){returnnewArrayList();}大多数时候甚至都没有考虑过。现在,问题是:我应该总是将接口(interface)指定为返回类型吗?或者是否建议使用接口(interface)的实际实现,如果可以,在什么情况下?很明显,使用界面有很多优势(这就是它存在的原因)。在大多数情况下,库函数使用什么具体实现并不重要。但也许在某些情况下它确实很重要。例如,如果我知道我将主要随机访问列表中的数据,那么LinkedList会很糟糕。但是如果我的库函数只返回接口(interface),我根本不知道。为了安全

java - 我应该什么时候返回接口(interface),什么时候返回具体类?

当我用Java编程时,出于习惯,我几乎总是写这样的东西:publicListfoo(){returnnewArrayList();}大多数时候甚至都没有考虑过。现在,问题是:我应该总是将接口(interface)指定为返回类型吗?或者是否建议使用接口(interface)的实际实现,如果可以,在什么情况下?很明显,使用界面有很多优势(这就是它存在的原因)。在大多数情况下,库函数使用什么具体实现并不重要。但也许在某些情况下它确实很重要。例如,如果我知道我将主要随机访问列表中的数据,那么LinkedList会很糟糕。但是如果我的库函数只返回接口(interface),我根本不知道。为了安全

java - 为什么抽象方法不能同步?

我正在阅读threadfromCodeRanch说抽象方法不能同步,因为抽象类不能被实例化,意味着没有对象可以锁定。这没有意义,因为抽象类是子类的定义(契约)。同步方法的抽象定义不需要锁,子进程需要。所有抽象标题都表明子必须同步此方法。我对此的逻辑是否正确?如果没有,有人可以解释我为什么错了吗? 最佳答案 关于无法实例化抽象类的评论是垃圾。鉴于它必须是抽象的实例方法,所以肯定有一个可以锁定的引用。抽象类中的具体方法仍然可以引用this。但是,这仍然不意味着抽象类应该能够同步。方法是否同步是方法的实现细节。任何地方都没有将同步指定为声

java - 为什么抽象方法不能同步?

我正在阅读threadfromCodeRanch说抽象方法不能同步,因为抽象类不能被实例化,意味着没有对象可以锁定。这没有意义,因为抽象类是子类的定义(契约)。同步方法的抽象定义不需要锁,子进程需要。所有抽象标题都表明子必须同步此方法。我对此的逻辑是否正确?如果没有,有人可以解释我为什么错了吗? 最佳答案 关于无法实例化抽象类的评论是垃圾。鉴于它必须是抽象的实例方法,所以肯定有一个可以锁定的引用。抽象类中的具体方法仍然可以引用this。但是,这仍然不意味着抽象类应该能够同步。方法是否同步是方法的实现细节。任何地方都没有将同步指定为声

java - Spring 数据 JPA : Creating an abstract repository

给定以下类:@MappedSuperclass@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)@DiscriminatorColumn(name="animalType",discriminatorType=DiscriminatorType.STRING)@QueryExcludepublicabstractclassAnimal{}@Entity@DiscriminatorValue("dog")publicclassDog{}@Entity@DiscriminatorValue("cat")publicclassCat{

java - Spring 数据 JPA : Creating an abstract repository

给定以下类:@MappedSuperclass@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)@DiscriminatorColumn(name="animalType",discriminatorType=DiscriminatorType.STRING)@QueryExcludepublicabstractclassAnimal{}@Entity@DiscriminatorValue("dog")publicclassDog{}@Entity@DiscriminatorValue("cat")publicclassCat{

c# - 对于抽象类中的方法,extern、abstract 和 partial 之间有什么区别?

我写一个抽象类是因为我想提供一些常用的方法,要求一些方法过于具体,并允许一些方法“扩展”。在遇到编译器错误后,我想知道是否有人可以解释extern、abstract和partial关键字之间的区别。它们是什么意思,我应该何时/何地使用它们? 最佳答案 extern不太可能是您想使用的东西。这意味着该方法已实现,但在外部实现-通常用于您定义在外部代码中实现的方法的互操作场景。abstract,另一方面,意味着您正在为该方法定义API,但不提供实现。子类必须为任何标记为abstract的方法或属性提供实现,或者本身就是abstract。

C++ : Cannot declare field to be of abstract type

我在编译时收到此错误->无法将字段M1::sc声明为抽象类型I1,因为以下虚函数在I1中是纯的。请帮忙。classI1{public:virtualvoida(intdir)=0;virtualvoidb()=0;virtualvoidc()=0;voida(intdir){....}voidb(){....}voidc(){....}};classI2:publicI1{public:voida(intdir){....}voidb(){....}voidc(){....}};classM1:publicG1{protected:I1sc;public:intdir=4;sc.a(d

c# - 如何在 .NET 类库中创建 "abstract"枚举?

我正在制作一个服务器库,其中数据包关联由枚举完成。publicenumServerOperationCode:byte{LoginResponse=0x00,SelectionResponse=0x01,BlahBlahResponse=0x02}publicenumClientOperationCode:byte{LoginRequest=0x00,SelectionRequest=0x01,BlahBlahRequest=0x02}当您在自己的项目中工作时,这很好用-您可以比较返回的枚举成员(即if(packet.OperationCode==ClientOperationCode