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(sence Subclass extends BaseClass)是不可能的?为什么Java不允许我做以下事情:
例:
Class Base{
private String name;
.....
} …Run Code Online (Sandbox Code Playgroud) 我有一个非常大的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) 我使用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) extends ×1
java ×1
javafx ×1
php ×1
subclass ×1
superclass ×1
visibility ×1
xml ×1
xmlreader ×1
xmlwriter ×1