小编CKi*_*ing的帖子

是否可以使用扩展抽象类的空子类?

考虑以下:

  public abstract class Item {
     String name;
     String description;
     //concrete getters and setters follow
  }

   public class InventoryItem extends Item {
     //empty subclass of Item 
   }

  public class CartItem extends Item {
     int quantity;
     int tax;
     //getters and setters for quantity and tax follow
  }
Run Code Online (Sandbox Code Playgroud)

InventoryItem表示可供销售的项目,而CartItem表示添加到购物车的项目,因此它具有其他属性,如数量和税金.在这种情况下,是否可以使用抽象类Item的空子类?

选项2:我们可以有一个空的Item接口.InventoryItem将实现Item并定义名称和描述属性,并具有getter和setter.CartItem将从InventoryItem扩展,并将数量和税收定义为属性,并具有getter和setter.

选项3:拥有Item接口会更好吗?InventoryItem将实现Item.然后我们可以有一个CartItem类,它有'一个'项和两个属性,即税和数量

java abstract-class subclass

6
推荐指数
1
解决办法
1960
查看次数

Java:在方法中将对象设置为null无效(重用代码)

我正在尝试编写一种从二进制搜索树中删除节点的方法.这是我删除节点的方法.

public void delete(int deletionNodeValue) {
    Node<Integer> nodeToBeDeleted = getNode(deletionNodeValue);
    if(nodeToBeDeleted == null) return; // No node with such value exists throw an error
    if(isLeafNode(nodeToBeDeleted)) {
        nodeToBeDeleted = null;
    } else if (nodeToBeDeleted.getNumChildren() == 1) {
        bypassNode(nodeToBeDeleted);
    }else {
        replace(nodeToBeDeleted, getSuccessor(nodeToBeDeleted.getValue()));
    }
}
Run Code Online (Sandbox Code Playgroud)

我在叶子节点上检查了这个方法,但是在调试之后我发现执行的nodeToBeSelected=null发生,实际上没有删除节点.因为我仍然可以搜索已删除的值,程序仍然设法获取它.

tree.add(5);
tree.delete(5);
System.out.println(tree.getNode(5).getValue()); // Output : 5, should've been deleted
Run Code Online (Sandbox Code Playgroud)

这是我的getNode()方法

public Node<Integer> getNode(int searchValue) {
    Node<Integer> currentNode = root;
    while(currentNode != null) {
        int currentNodeValue = currentNode.getValue();
        if(searchValue == currentNodeValue)
            return currentNode;
        else …
Run Code Online (Sandbox Code Playgroud)

java algorithm reference binary-search-tree

6
推荐指数
2
解决办法
900
查看次数

Java:如何从Thread返回中间结果

使用Java 7 我正在尝试构建一个监视数据存储(某些集合类型)的观察程序,然后在某些点返回某些项目.在这种情况下,它们是时间戳,当时间戳通过我希望它返回到起始线程的当前时间.请参阅下面的代码.

@Override
public void run() {
  while (!data.isEmpty()) {
    for (LocalTime dataTime : data) {
      if (new LocalTime().isAfter(dataTime)) {
        // return a result but continue running
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我已经阅读了关于未来和可赎回的内容,但他们似乎在回归时停止了这个问题.

我不特别想要返回一个值并停止线程,然后启动另一个任务,如果使用callable,除非这是最好的方法.

寻找这个的最佳技术是什么?似乎有这么广泛的做法.

谢谢

java multithreading monitor callable java-7

6
推荐指数
1
解决办法
809
查看次数

任何单线程程序如何成为有效的多线程程序?

我正在阅读"Java Concurrency In Practice"一书.在第二章中,我阅读了该声明

任何单线程程序也是一个有效的多线程程序

我无法理解这句话.

请分享您的想法,以便清除我的困惑.提前致谢.

java concurrency multithreading thread-safety

6
推荐指数
1
解决办法
167
查看次数

如何在golang中连接mongodb 3.0

当我将mongodb服务器升级到版本3.02.6,无法从golang使用mgo连接.

我添加'authMechanism=SCRAM-SHA-1'连接字符串,它仍然无法连接到服务器.我得到的错误是SASL support not enabled during build (-tags sasl)

go mongodb mgo

5
推荐指数
1
解决办法
4867
查看次数

如何在Java中生成事件?

首先,我不是在询问事件处理.我知道使用Observer模式实现了处理.

让我举一个小例子.假设我在JFrame上有一个Jbutton.我单击此按钮的顶部.现在按钮如何知道我点击了它?

1)是否有任何java线程等待点击?如果是这样的代码来自哪里(等到我点击部分)?那么每个swing组件是否都在等待线程之上的事件?我认为这是一项非常昂贵的任务.

2)如果没有,这是如何工作的?

java events swing

5
推荐指数
1
解决办法
444
查看次数

访问内部类中的for循环变量

我有一个int数组的数组.

DataArray[X][Y]
Run Code Online (Sandbox Code Playgroud)

我想为每个X创建一个线程,它沿Y迭代.我无法弄清楚如何将适当的X值传递给每个线程.

基本上我希望能够做到

ExecutorService threadPool = Executors.newFixedThreadPool(10);
for (int i = 0; i < X; i++) {
  threadPool.submit(new Runnable() {
    public void run() {         
      Function_to_run(i);
    }
  });
}
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激

java arrays multithreading

5
推荐指数
1
解决办法
1888
查看次数

策略或适配器模式?

我想创建每个虚拟服务器提供程序的一些类,例如:

  • 数字海洋
  • 的Linode
  • 亚马逊AWS

每个Provider都有自己的PHP类(通过composer)来使用他们的API接口,我想使用他们的类库,但我想确保我可以为每个提供者使用相同的方法.例如关闭VPS:

  • Linode API方法: powerOff()
  • 数字海洋API方法: haltServer()

而不是使用powerOff()haltServer()- 我想为shutdown()我将创建的任何提供程序类使用方法.我应该使用策略设计还是适配器模式?

php design-patterns strategy-pattern adapter

5
推荐指数
1
解决办法
962
查看次数

装饰模式:为什么我们需要一个抽象装饰器?

我很难理解Erich Gamma's书中Design Patterns关于Decorator模式的以下实现建议.

省略抽象的Decorator类当您只需要添加一个职责时,无需定义抽象的Decorator类.

我不明白为什么需要抽象的Decorator类呢?为什么不能所有装饰器只是直接实现/继承IComponent/Component?

c# java design-patterns

5
推荐指数
2
解决办法
1243
查看次数

流:一次计算总数的差异

我有一个List<LedgerEntry> ledgerEntries,我需要计算creditAmount和debitAmount的总和.

class LedgerEntry{
 private BigDecimal creditAmount;
 private BigDecimal debitAmount;

 //getters and setters
}
Run Code Online (Sandbox Code Playgroud)

我实现了这个,

BigDecimal creditTotal = ledgeredEntries.stream().map(p ->p.getCreditAmount()).
reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal debitTotal = ledgeredEntries.stream().map(p ->p.getDebitAmount()).
reduce(BigDecimal.ZERO, BigDecimal::add);
BigDecimal sumCreditDebit = creditTotal.subtract(debitTotal);
Run Code Online (Sandbox Code Playgroud)

这看起来像是在迭代List两次.有没有办法一次性完成这项工作,而无需两次蒸发列表?

java lambda bigdecimal java-8 java-stream

5
推荐指数
2
解决办法
188
查看次数