小编Jam*_*mes的帖子

扩展通用类

public class MyGeneric<T, E> {}

public class Extend1<T, E> extends MyGeneric<T, E> {}

public class Extend2 extends MyGeneric<String, Object> {}
Run Code Online (Sandbox Code Playgroud)

据我所知,上例中的两个子类都是有效的.我想知道Java何时知道在实例化子类时何时定义超类中给出的类型,以及何时它们是实际的类名(即它如何知道T,E不是类名)?

附注,是否允许(即使不常见)为泛型类型使用多个字母?如果(通过计划的某些严重错误)类型与现有类冲突,例如

public class E{}
public class Foo<E>{}
Run Code Online (Sandbox Code Playgroud)

那会发生什么?

编辑:感谢您及时回答.要回答我的第一个问题,Joachim的答案是最有效的.

为了回答这一点,aioobe的答案更加清晰

java generics class subclassing

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

编写HTML解析器

我目前正在尝试(或计划尝试)编写一个简单的(尽可能)程序来将html文档解析为树.

谷歌搜索后,我发现许多答案说"不要做它已经完成"(或者说是这样的话); 和HTML解析器示例的引用; 还有一篇相当有说服力的文章,说明为什么不应该使用常规表达.但是我没有找到任何关于编写解析器的"正确"方法的指南.(顺便说一句,这是我尝试更多的东西,而不是任何东西,所以我非常喜欢这样做,而不是使用预制的)

我相信我只需通过阅读文档并将标签/文本等添加到树中就可以创建一个有效的XML解析器,每当我点击一个关闭标签时就会升级一个级别(同样,简单,没有花哨的线程或在这个阶段需要效率).但是,对于HTML,并非所有标记都已关闭.

所以我的问题是:你会建议什么作为处理这个问题的方法?我唯一的想法就是以与XML类似的方式对待它,但是有一个标签列表,这些标签不一定都是关闭的条件(例如<p>结束于</ p>或下一个<p >标签).

有没有其他任何(希望更好)的建议?是否有更好的方法完成这项工作?

html parsing html-parsing

26
推荐指数
4
解决办法
9216
查看次数

Objective C为什么将字符串格式化为字符串

在处理由前一个dev留给我的项目代码时,我遇到了以下构造

-(NSString *)StringCheckWithString:(NSString *)string{

    NSString *string2 = [NSString stringWithFormat:@"%@", string];

    if([string2 length] == 0){
        return @"none";
    }
    else {
        return string2;
    }
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么你会这样做,它似乎显着过度设计了我,我不明白为什么它这样做(为了清楚,我不明白为什么字符串格式这样,我理解长度检查)

string objective-c nsstring ios

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

Java和List接口的Java组合

我有一个数据结构,我目前正在使用它ArrayList.我意识到在这个结构中我不希望出现任何重复.我的第一个想法是使用某种形式的集合,但顺序也很重要.经过一些谷歌搜索和搜索收藏文档,我发现LinkedHashSet几乎完成了这项工作.不幸的是,保留顺序的一个主要原因是因为我使用get(int index)ArrayList 的方法进行随机访问,我无法看到任何解决方法.

更简洁 - 我需要一个保留顺序并允许随机访问的集合.到目前为止,我所看到的所有类都没有提供此功能.有没有人知道提供这个的课程,还是我必须自己做?如果是后一种情况,在创建人们都知道的这种结构时会有任何陷阱吗?

(或者,从ArrayList或类似结构中检查和删除重复项的快速简便方法就足够了)

编辑:为了清楚起见,将元素添加到列表中的顺序是重要的,而不是它们彼此比较的顺序

java collections list set

4
推荐指数
2
解决办法
1826
查看次数

Django Extend管理员索引

我希望对Django管理界面进行一些修改(具体来说,删除“更改”链接,同时保留“模型名称”作为指向实例更改页面的链接)。我可以通过从管理应用程序复制和粘贴index.html并对模板进行修改来实现此目的,但是我希望仅通过扩展模板来覆盖有问题的部分-但是我不确定如何将其作为模板来实现具有相同的名称。我也对实现这种效果的其他方法持开放态度。(Django 1.7,Python 3.4.1)

python django django-admin

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

对JTable进行排序会导致NullPointerException

我有一个JTable,当点击相应的按钮时,它开始填充在后台继续的文件树步行的结果.这很好用.

然后我决定要对表进行排序.经过一些阅读后,我创建了一个TableRowSorter并设置表来使用它.它似乎工作,但仔细检查后,我注意到几个文件结果不存在.我禁用了分拣机并再次运行程序并且所有文件都存在,再次重新启用分拣机时有些遗漏,但每次丢弃时似乎都是不同的文件.

为了检验这一点,我创建了一个自包含的代码块作为测试(见下文),它代表了JTable代码(事实上,大块直接从现有程序代码中提取).文件树遍历由for循环表示.再次,没有分拣机它完美地工作.但是,当我启用分拣机时(通过取消注释第29行)整个程序冻结,我被告知有一个NullPointerException.

我不知道造成这些问题的原因是什么,事实上它们甚至是相关的.欢迎任何有关错误的想法.

import javax.swing.table.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class Sort extends JFrame{

    private JTable table;
    private DefaultTableModel model;
    private TableRowSorter<DefaultTableModel> sorter;

    private JButton go;

    public Sort(){
        super("Sort");

        // Create table and model
        model = new DefaultTableModel(0, 4);
        table = new JTable(model);

        // Setup sorting
        sorter = new TableRowSorter<DefaultTableModel>(model);
        ArrayList<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
        sortKeys.add(new RowSorter.SortKey(2, SortOrder.ASCENDING));
        sortKeys.add(new RowSorter.SortKey(3, SortOrder.ASCENDING));
        sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING));
        sorter.setSortKeys(sortKeys); 
        //table.setRowSorter(sorter);

        // Create Scroll Pane
        JScrollPane tableScroller = new JScrollPane(table); …
Run Code Online (Sandbox Code Playgroud)

java swing jtable

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

将JPanel添加到JLayeredPane会导致绘制和调整大小无效

我正在尝试将一个JPanel(好吧,几个)添加到JLayeredPane.但是,当我这样做时,JPanel的paint组件方法似乎没有任何效果.下面是一个例子:

import javax.swing.*;
import java.awt.*;

public class Example {

    public static void main(String[] args) {

        // This Works as expected
        JFrame usingPanel = new JFrame();
        JPanel p = new JPanel();
        p.add(new BluePanel());
        usingPanel.setContentPane(p);
        usingPanel.pack();
        usingPanel.setVisible(true);

        // This makes the frame but does not paint the BluePanel
        JFrame usingLayer = new JFrame();
        JLayeredPane l = new JLayeredPane();
        l.setPreferredSize(new Dimension(200,200));
        l.add(new BluePanel(), JLayeredPane.DEFAULT_LAYER);
        JPanel p2 = new JPanel();
        p2.add(l);
        usingLayer.setContentPane(p2);
        usingLayer.pack();
        usingLayer.setVisible(true);
    }


   static class BluePanel extends JPanel{

        public BluePanel(){
            setPreferredSize(new Dimension(200,200)); …
Run Code Online (Sandbox Code Playgroud)

java swing jlayeredpane

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