Java:使用一个函数返回一些不同类型的值

Nic*_*ner 1 java oop software-design

我有一个readData()函数读取文件,返回几个不同的解析数据对象.现在,返回类型readData()Object[]:

Object[] data = readData();
MyGenome genome = data[0];
Species[] breeds = data[1];
//etc
Run Code Online (Sandbox Code Playgroud)

这感觉很尴尬.有没有更好的方法来返回这些数据?我不希望有像这样的单独函数readGenome(),readSpecies()因为这需要迭代文件两次.另外,我宁愿将所有数据收集包装在一个函数中.

类似的问题:在两个字符串之间返回至少四个字符匹配的函数:

public int[][] findMatch(String g0, String g1) { /* cool stuff */ }
//...
int[][] bounds = findMatch("ACOIICOCOCICOICA", "AOCCCCCCICCIIIIIOIAOCICOICOICA");
Run Code Online (Sandbox Code Playgroud)

bounds[0][0]g0上的左边界是哪里,是g0 bounds[0][1]上的右边界,bounds[1][0]是g1上的左边界,等等.这也有点尴尬.如果不连续查找键,很难对结果进行编码.

Ste*_*hen 6

创建一个新类:

class MyAnalysedGenome {
    MyGenome genome;
    Species[] species
    ...
}
Run Code Online (Sandbox Code Playgroud)

并返回.您可能会发现您还应该有其他功能.也许围绕你的getData()调用的代码.


Rya*_*ela 5

如何使用强类型类来表示readData()的复杂返回类型?

public class Taxonomy
{
    public MyGenome genome;
    public Species[] breeds;
    //etc
{

Taxonomy data = readData();
Run Code Online (Sandbox Code Playgroud)

您可以针对搜索范围问题执行相同的操作

public class SearchBoundary
{
    public int left;
    public int right;
}

SearchBoundary resultBounds = findMatch(searchBounds);
Run Code Online (Sandbox Code Playgroud)

  • 永远(是的,我的意思是__NEVER__)严格遵守你不应该做的事情的规则.很少有规则没有例外.例如,在两个完全由代码控制的地方之间来回传递纯数据......在这种情况下避免吸气剂和制定者的愚蠢是完全合理的. (2认同)