小编Dee*_*zee的帖子

在枚举中初始化一个字符串数组

我有一个Java的枚举,每个枚举成员都有许多参数.我想要做的是将这些参数之一作为字符串数组,但我似乎无法进行正确的初始化.

这是我尝试过的:

private static enum DialogType {
    ACCCAT("Acccat", new String[] {"acccatid"}, "acccatText", "dlg7Matchcode", "Zutritts\nkategorie", "Text"),

    private String mDialogName;
    private String[] mKeyField;
    private String mTextField;
    private String mSelectFields;
    private String mKeyFieldHeader;
    private String mTextFieldHeader;

    private DialogType(String dialogName, String[] keyField, String textField, String selectFields, String keyFieldHeader, String textFieldHeader) {
        mDialogName = dialogName;
        mKeyField = keyField;
        mTextField = textField;
        mSelectFields = selectFields;
        mKeyFieldHeader = keyFieldHeader;
        mTextFieldHeader = textFieldHeader;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我遇到了大量的语法错误.有任何想法吗?

java enums

8
推荐指数
1
解决办法
9868
查看次数

JProfiler 内存视图 -> 对象大小

我的应用程序中有以下类:

class A {
  String someString;
  Locale someLocale;

  Map<Integer, B> someMap = new HashMap<Integer, B>();

  fillMap() {
    // some logic to fill the map with instances of B
  }
}

class B {
  // lots of filled collections
}
Run Code Online (Sandbox Code Playgroud)

我正在与 JProfiler 进行分析会话以识别一些内存问题。在内存视图选项卡上,使用聚合级别类,例如我有 2000 个 A 实例,总大小为 156KB。

我的问题是这个尺寸意味着什么?它只是对 A 对象的引用的大小,还是 A 的所有填充成员的大小(我特别想知道 Map )?我想这只是 A 参考尺寸,但想确保这一点。

java profile jprofiler

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

变量命名接口

我需要一个代表接口的变量.我想知道这样的变量是否有"标准"名称,例如类变量的clazz.我想把它命名为接口,但我不喜欢这个名字......

java naming-conventions xtext

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

Java中的GPS计算

我正在寻找一个免费的Java API,它提供了计算GPS坐标之间距离的基本功能.我需要两点之间的基本getDistance,即一个点周围半径的兴趣点.
我做了一些研究,一方面发现了一些选择.

一方面有Apache SIS(http://incubator.apache.org/sis/index.html),但这仍在开发中,可能会改变一些.另一方面是GeoTools(http://docs.geotools.org/),但这对我的需求来说相当复杂.

还有其他易于使用且更简单的API吗?

另一种选择是简单地自己实现所有这些,我已经看到了一些自己的实现的例子,但是它们都有一些类似的评论:"这不是真正的工作,它提供的距离是100米".这样的实施有多可靠?

java api gps

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

Java 中可变参数方法的性能

我有一个关于 Java 中参数数量可变的方法的性能问题。

假设我有以下两种选择:

public static final boolean isIn(int i, int v1, int v2) {
    return (v1 == i) || (v2 == i);
}

public static final boolean isIn(int i, int... values) {
    for (int v : values) {
        if (i == v) {
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

现在,当我的第一个方法的参数达到 20、30 甚至 50 个时,主要问题就出现了。现在这样只会伤眼睛。好的,这是遗留代码,我想用唯一的一个变量参数方法替换所有代码。

知道这对性能会有什么影响吗?编译器是否有可能对第二种方法进行一些优化,使其或多或少类似于第一种形式?

编辑:好吧,也许我还不够清楚。对于具有 50 个参数的方法,我没有遇到性能问题。正如 Peter Lawrey 所说,这只是关于可读性。我想知道如果我切换到参数数量可变的新方法,会出现性能问题
换句话说:如果您关心性能,最好的方法是什么?具有 50 个参数的方法还是唯一一种具有可变参数的方法?

java performance

3
推荐指数
1
解决办法
2555
查看次数

列出类中的处理

假设我有一个A类,它有一个相关元素列表(元素类型不相关):

public class A {
  private List<String> list;

  public List<String> getList() {
    return list;
  }

  public void addElement(String element) {
    list.add(element);
  }
}
Run Code Online (Sandbox Code Playgroud)

现在我希望从另一个类Client访问此列表.我需要添加一个新元素.从设计的角度来看,问题是一个更具哲学性的问题.

public class Client {
  private A a = new A();

  public void method1() {
    a.getList().add("");
  }

  public void method2() {
    a.addElement("");
  }    
}
Run Code Online (Sandbox Code Playgroud)

如果有人能指出任何这些方法的任何优势,将不胜感激.谢谢.

java

3
推荐指数
2
解决办法
1025
查看次数

不同子类中的相同实现

说我有以下情况:

    abstract class A {
        abstract method1();
        abstract method2();
    }

    class B extends A {
        method1() {
            // implementation 1
        }
        method2() {
            // implementation 3
        }
    }

    class C extends A {
        method1() {
            // implementation 1
        }
        method2() {
            // implementation 4
        }
    }

    class D extends A {
        method1() {
            // implementation 2
        }
        method2() {
            // implementation 4
        }
    }
Run Code Online (Sandbox Code Playgroud)

底线:同一类的几个子类,使用不同方法的不同方法实现.

问题是我在不同的子类中有相同的实现.我的问题是如何处理这些常见的实现?
这样做的逻辑方法是创建另一个抽象级别,但只有当我有一个具有常见实现的方法时才能工作(因为Java没有多重继承).我还可以将最常用的实现放在超类中,并且只在其他类中以不同方式实现它.但是,我不这样做,因为随着时间的推移,最常见的实现可能会随着其他类的添加而改变,此外,我希望将方法保持在超类中.

是否有一些模式能够以"优雅的方式"解决我的问题?

java

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

Xtext项目列表或仅一个项目

我正在尝试创建一个解析以下内容的语法:

reference: java.util.String
Run Code Online (Sandbox Code Playgroud)

但同样

reference: {java.util.String, java.lang.Integer}
Run Code Online (Sandbox Code Playgroud)

换句话说,我希望它既解析一个合格名称列表,也只解析一个项目(在这种情况下不用'{'标记).

我试过的是这个:

Reference:
    'reference' ':' ('{' values+=QualifiedName (',' values+=QualifiedName)* '}') | (values+=QualifiedName);
Run Code Online (Sandbox Code Playgroud)

但是,我收到一个错误:在使用第一种形式的引用(没有{)时,在'java'中缺少'{'.有什么建议我应该尝试一下吗?

编辑:也尝试过

Reference:
    'reference' ':' ('{' values+=QualifiedName (',' values+=QualifiedName)* '}') | ((!'{')values+=QualifiedName);
Run Code Online (Sandbox Code Playgroud)

但在输入'!'时找不到可行的选择 语法定义中的错误.

编辑2:我没有"逗号分隔列表"的问题,我分开尝试了它,它运作良好.我唯一的问题是基于'{'字符来区分规则的两个部分.

grammar xtext

0
推荐指数
1
解决办法
2941
查看次数

标签 统计

java ×7

xtext ×2

api ×1

enums ×1

gps ×1

grammar ×1

jprofiler ×1

naming-conventions ×1

performance ×1

profile ×1