这是一个理论问题,我猜我正在使用这个问题找到标准程序.
如果我有一个Constructor方法执行大量的设置操作来收集数据等,我应该在构造函数中保留"所有构造",还是应该尝试从构造函数内部调用其他方法(对于代码看起来基本上),或者我应该只是初始化我所拥有的一切,如果实际需要的话,还可以留下其他待处理的东西?
这是一个例子.
我正在创建一个基本上是集合管理器的对象.它需要从文件中读取数据并将其存储在数组中.
我是否只使用构造函数创建一个具有基本属性的对象并稍后读取数据,或者我是否应该读取所有信息并在构造函数中设置数组,这样可以节省时间,但在这里需要额外的时间,或者我应该做些什么沿着这条线
public myConstructor(String filename) {
data = readDataIn(filename);
}
Run Code Online (Sandbox Code Playgroud)
这不是实际的代码,只是一个外包到不同方法的例子来"漂亮代码"而不是超长构造函数方法我可以说5-6个简短且外观漂亮的方法只能由构造函数访问.
我正在编写一个程序,它将严重依赖于某些东西......它存储数据,就像数组一样,我可以在任何给定的时间访问任何数据点,就像我在数组中一样.
我知道java库有一个我可以使用的Array类,或者我可以使用raw array [].
我希望使用Array类型更容易编码,但我希望它的效率稍差.
我的问题是,在这两者之间使用哪个更好,是否有更好的方法来实现相同的结果?
我需要找到一种方法来获取当前音频输出音量,同时手机在耳机上发出噪音,此值将转换为分贝级别.除了看似任意的音量设置级别之外,android API似乎没有任何方法可以访问恒定的音量级别,但我没有看到将其转换为标准分贝级别或"响度"测量的方法.我已经看到了一些使用麦克风的方法,但是它不能很好地用于耳机.
有没有人知道一种方法来测量要比较的最大可能分贝(或某些标准)输出电平,或者可能发送到耳机的电压?
欢迎帮助.
我正在创建一个泛型类,它有一个方法可以对数组集合进行排序,该集合可以是Book,也可以是CD.我在两个类型类中实现了Comparable,并尝试在GenericCollection类中对数组进行排序.
我的方法现在看起来像这样:
public void sort(){
for (int i = 0; i < collection.length; i++) {
for (int j = 0; j < collection.length; j++) {
if (((T)collection[i]).compareTo((T)collection[j]) > 0){
T t = (T)collection[i];
collection[i] = collection[j];
collection[j] = t;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误,即Object无法比较.如果我尝试强制转换为类型T,那么我得到的错误是T未定义为CompareTo.如果我尝试类似的东西:
<T extends Comparable>
Run Code Online (Sandbox Code Playgroud)
我可以编译,但我得到一个运行时错误,即使我在使用此类的两种类型中都定义了Comparable.
如何让Generic类型能够在自己的类中运行compareTo方法.
谢谢你的帮助.
我正在编写一个程序,它有两个我希望使用的最终变量,我需要在实际运行类时设置它们,因为它们可能在每个实例中都不同.
我的初始化与我希望使用的任何其他类变量相同,我初始化名称和类型但不是值.
public final String filename, filepath;
Run Code Online (Sandbox Code Playgroud)
在构造函数中,我将值设置如下
public myClass(String value) {
this.filename = value;
this.filepath = anotherPartOfValue;
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我收到一条警告"最终字段[x]可能已被分配"
有没有办法避免这个警告,仍然保持最终状态并在构造函数中设置值?
我正在使用eclipse btw.
编辑:
这是给我错误的确切代码
import java.io.*;
public class Dirt {
private String[] tables;
private int numTables;
private final String filename, filepath;
public Dirt(String file) {
this.tables = new String[0];
this.numTables = 0;
for (int i = file.length(); i < 0; i--) {
if (file.charAt(i) == '/') {
this.filename = file.substring(i);
this.filepath = file.substring(1, i-1);
}
}
}
Run Code Online (Sandbox Code Playgroud)
}