草庐IT

DoSomething

全部标签

java - 如何在不修改子类的情况下添加对现有子类中方法调用的控制?

我有一些BaseClass用一些方法voiddoSomething().foSomething有不同的方法它们由SubClass1实现,SubClass2和SubClass3.现在我想添加一个Booleanactive属性(property)给BaseClass这样当doSomething在一个实例上调用它只会返回而不做任何事情。我知道我可以编码BaseClass有doSomething()看起来像:VoiddoSomething(){if(this.getActive())actuallyDoSomething();}然后@OverrideactuallyDoSomething()而

java - 如何测试 ClassFileTransformer/javaagent?

我使用ASM为javaagent实现了一个ClassFileTransformer。因为它有一些bug,我想为它写一个JUnit测试用例。我该怎么做?使用我认为的伪代码://HaveatestclassassubjectpublicstaticclassSubject{publicvoiddoSomething(){...}}//Manuallyloadandtransformthesubject...?//NormallyexecutesomenowtransformedmethodsofthesubjectnewSubject().doSomething();//Checkther

java - 重写泛型类的方法时发生名称冲突

我试图通过以下代码了解名称冲突错误:importjava.util.*;importjavax.swing.*;classFoo{publicvoiddoSomething(Numbern,Mapcomps){}}classBarextendsFoo{publicvoiddoSomething(Numbern,Mapcomps){}}错误信息:error:nameclash:doSomething(Number,Map)inBaranddoSomething(Number,Map)inFoohavethesameerasure,yetneitheroverridestheother我知

java - 接口(interface)实现启动不同的异常

我有一个界面publicinterfaceDataDAO{publicvoiddoSomething()throwsException;}假设有两种实现,一种使用数据库获取数据,另一种使用Web服务。publicclassDataDAOJdbcimplementsDataDAO{publicvoiddoSomething()throwsException{//Implement}}publicclassDataDAOWebServiceimplementsDataDAO{publicvoiddoSomething()throwsException{//Implement}}如您所见,问

java - java中的无痛资源管理

在C++中,我们在构造函数中获取资源并在析构函数中释放它。因此,当异常在函数中间出现时,不会发生资源泄漏或互斥锁锁定等情况。据我所知,Java类没有析构函数。那么如何在Java中进行资源管理。例如:publicintfoo(){Resourcef=newResource();DoSomething(f);f.Release();}如果DoSomething抛出异常,如何释放资源?我们不能在整个代码中放置try\catchblock,对吗? 最佳答案 是的,您可以而且应该在您的代码周围放置try/catch/finallyblock。

java - 在 Java 中命名重载的单元测试方法

当目标有重载时,命名单元测试方法最被接受的方式是什么。考虑这些方法:doSomething();doSomething(String);您如何命名相应的测试方法?这是最容易接受的方式吗?testDoSomething();testDoSomethingString(); 最佳答案 做任何让你和你的同事更易读的事情,如果有的话。我认为这取决于您对该类的其他测试是什么,但基于这两种方法,我会这样做:测试doSomething()的测试方法:doSomething_void_success(这将是测试成功路径的一些测试)doSomethi

java - java中反射和后期绑定(bind)的区别与实时示例

在学习Java教程的时候,Reflection和LateBinding让我很困惑。在一些教程中,他们写道它们是相同的,并且反射和后期绑定(bind)之间没有任何区别。但是其他教程说有区别。我很困惑,所以有人可以解释一下Java中的反射和后期绑定(bind)是什么,如果可能的话,请给我一些关于两者的真实示例。谢谢.. 最佳答案 Java使用后期绑定(bind)来支持多态性;这意味着应该推迟到运行时才决定应该使用许多方法中的哪一个。以N个类实现接口(interface)(或抽象类,fwiw)的抽象方法为例。publicinterface

Java 迭代器并发

我正在尝试并发循环Java迭代器,但在寻找执行此操作的最佳方法时遇到了问题。这是我没有尝试同时做任何事情的地方。Longl;Iteratori=getUserIDs();while(i.hasNext()){l=i.next();someObject.doSomething(l);anotheObject.doSomething(l);}我在非迭代器对象上所做的事情之间应该没有竞争条件,所以我不太担心。我只是想通过不按顺序执行迭代器来加快循环迭代器所需的时间。提前致谢。 最佳答案 一种解决方案是使用执行程序来并行化您的工作。简单的例

java - 在 Java 中使用重载方法键入顺序

给定Java中同一个类的两个方法:publicvoiddoSomething(Personperson);publicvoiddoSomething(Employeeemployee);在哪里EmployeeextendsPerson如果我调用:doSomething(employee)我发现doSomething(Person)被调用了。我希望调用具有最接近匹配契约的重载,而不是最抽象的(这是我正在发现的)谁能解释一下为什么? 最佳答案 使用最具体的适用重载-但该重载是在编译时根据employee变量的编译时类型确定的。换句话说:

Java - 避免静态函数的 switch 语句

检查这段代码-switch(kind){case"green":GreenKind.doSomething();//Staticfunctionbreak;case"white":WhiteKind.doSomething();//Staticfunctionbreak;case"blue":BlueKind.doSomething();//Staticfunctionbreak;case"yellow":YellowKind.doSomething();//Staticfunctionbreak;}有办法避免switch语句吗?因为它闻起来很糟糕。也许是这样的?-kinds.get(