小编Ram*_*i.Q的帖子

java,从SuperClass初始化SubClass

public class Base {
  //long list of attributes
  // no Constructor using fields
  // no init methode 
  // i cannot change this class
}
Run Code Online (Sandbox Code Playgroud)

现在我扩展了基类,如:

public class subClass extends Base{
   private boolean selected;

   ...
   getter und setter
   ...
}
Run Code Online (Sandbox Code Playgroud)

我成为Base对象的列表 List<Base>

但我需要相同的列表,但List<SubClass> 有没有办法从基类初始化子类?

例:

for(Base b: list){
   SubClass sub = (SubClass)b; // Thats wrong i know
   if(...){
       sub.setSelected(true);
   }
   newList.add(sub);
}
Run Code Online (Sandbox Code Playgroud)

我试图避免Class对SubClass 的每个Base属性的手动初始化

我按照评论中的要求更新我的问题:上面的设计只是一个例子.我的QUESTIN确实是:

为什么将BaseClass转换为SubClass(s​​ence Subclass extends BaseClass)是不可能的?为什么Java不允许我做以下事情:

例:

Class Base{
   private String name;
.....
} …
Run Code Online (Sandbox Code Playgroud)

java extends initialization subclass superclass

11
推荐指数
1
解决办法
2万
查看次数

PHP XMLReader读取,编辑Node,编写XMLWriter

我有一个非常大的XML文件(数百万条记录).由于速度和内存限制,我打算使用XMLReader/ XMLWriter.

我需要读取文件,获取一条记录,更改其属性,最后再次保存XML.

为了测试,我创建了一个XML文件,并使用以下行将一些记录写入其中:

$doc = new XMLWriter();  
$doc->openURI($xmlFile);  
$doc->startDocument('1.0','UTF-8');  
$doc->setIndent(4);   
$doc->startElement('DBOS'); 
for($r=0;$r<10; $r++){
    $doc->startElement('ITEMS');
    for($i=0;$i<5; $i++){
        $doc->startElement('ITEM');  
        $doc->writeAttribute('id', $r.'-'.$i);
        $doc->endElement();
    }
    $doc->endElement();
}
$doc->endElement();  
$doc->endDocument();   
$doc->flush();
Run Code Online (Sandbox Code Playgroud)

我用这个再读一遍:

$reader = new XMLReader();
if (!$reader->open($xmlFile)){
    die("Failed to open 'data.xml'");
}
while($reader->read()){
    if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'ITEMS') {
        $node = $reader->expand();
        $items = $node->childNodes;
        foreach ($items as $ik => $itm ){
            print $itm->textContent.'<br/>';
            // how to change the ID Attribute of a Node (DomNode) and save …
Run Code Online (Sandbox Code Playgroud)

php xml xmlwriter xmlreader data-manipulation

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

JavaFX在组件不可见时填充空白区域?

我使用Linux Suse 12.3,JDK 1.7.0-45,JavaFX 2.2.

我的问题是:为什么以下代码无法正常工作以及如何实现toggleShow/hide功能?

这是我的测试代码:

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ToolBar;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.scene.web.HTMLEditor;
import javafx.stage.Stage;

public class Test extends Application {
    public static void main(String[] args) { 
        launch(args); 
    }

    @Override
    public void start(final Stage stage) {
        AnchorPane root = new AnchorPane();


        BorderPane inner = new BorderPane();

        AnchorPane.setTopAnchor(inner, 0.0);
        AnchorPane.setRightAnchor(inner, 0.0);
        AnchorPane.setBottomAnchor(inner, 0.0);
        AnchorPane.setLeftAnchor(inner, 0.0);

        final HTMLEditor center = new HTMLEditor();

        final ToolBar top = new ToolBar();
        final Button …
Run Code Online (Sandbox Code Playgroud)

visibility javafx

4
推荐指数
1
解决办法
8172
查看次数