我是一名新的Android程序员,最近,我的很多项目都收到了这个错误:
07-31 23:45:19.592: ERROR/AndroidRuntime(716): java.lang.RuntimeException: Unable to start
activity ComponentInfo{com.amrit.musifind/com.amrit.musifind.Main}:
java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决这个问题吗?
这是整个logcat堆栈跟踪:
07-31 23:45:18.512: INFO/ActivityManager(63): Starting activity: Intent {
act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000
cmp=com.amrit.musifind/.Main }
07-31 23:45:18.682: INFO/ActivityManager(63): Start proc com.amrit.musifind for activity
com.amrit.musifind/.Main: pid=716 uid=10025 gids={3003}
07-31 23:45:18.962: INFO/jdwp(716): received file descriptor 20 from ADB
07-31 23:45:19.102: DEBUG/ddm-heap(716): Got feature list request
07-31 23:45:19.572: DEBUG/AndroidRuntime(716): Shutting down VM
07-31 23:45:19.572: WARN/dalvikvm(716): threadid=3: thread exiting with uncaught
exception (group=0x4001aa28)
07-31 23:45:19.572: ERROR/AndroidRuntime(716): Uncaught handler: thread main exiting due
to uncaught …Run Code Online (Sandbox Code Playgroud) 我无法理解源代码Arrays.copyOf.
public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) {
T[] copy = ((Object)newType == (Object)Object[].class)
? (T[]) new Object[newLength]
: (T[]) Array.newInstance(newType.getComponentType(), newLength);
System.arraycopy(original, 0, copy, 0,
Math.min(original.length, newLength));
return copy;
}
Run Code Online (Sandbox Code Playgroud)
这行检查是什么?
(Object)newType == (Object)Object[].class
Run Code Online (Sandbox Code Playgroud)(T[]) new Object[newLength]和之间有什么区别(T[]) Array.newInstance(newType.getComponentType(), newLength)?为什么Array.newInstance两种情况都不够好?
以下行编译,但在运行时崩溃(如预期的那样).我什么时候应该使用这种方法?
Integer[] nums = Arrays.copyOf(new String[]{"a", "b"}, 2, Integer[].class)
Run Code Online (Sandbox Code Playgroud)public class Demo
{
public static void main(String[] args)
{
int a=10,b=20;
short c = (a<b)?a:b;
System.out.println(c);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的程序,我得到以下错误,为什么我没有得到
"Demo.java:6: error: incompatible types: possible lossy conversion from int to short
short c = (a<b)?a:b;
1 error"
Run Code Online (Sandbox Code Playgroud)
我用变量声明写"final",它工作正常.但为什么会这样呢?
public class Demo
{
public static void main(String[] args)
{
final int a=10,b=20;
short c = (a<b)?a:b;
System.out.println(c);
}
}
Run Code Online (Sandbox Code Playgroud) 我的程序有一个方法,可以获取特定行的计数并将其转换为BigInteger:
private BigInteger getSameSatPremise(ServiceAgreement sa) {
BigInteger count = BigInteger.ZERO;
StringBuffer queryHql = new StringBuffer();
queryHql.append("from Table t1");
Query query = createQuery(queryHql.toString());
query.addResult("count", "count(distinct t1.column1)");
if (query.listSize() > 0) {
count = (BigInteger) query.firstRow();
}
return count;
}
Run Code Online (Sandbox Code Playgroud)
当查询结果为0时,转换工作正常.但是当查询结果为2时,我得到如下所示的转换错误.
Caused by: java.lang.ClassCastException: java.lang.Long cannot be cast to java.math.BigInteger
Run Code Online (Sandbox Code Playgroud)
谁能帮忙.