Static member 'java.lang.Thread.sleep(long)' accessed via instance reference 。这是什么原因
时间: 2023-06-16 20:05:03 浏览: 228
这个错误是因为你在使用静态方法时使用了实例化对象来调用它。应该使用类名来调用静态方法,而不是对象实例。
例如,对于Thread类中的静态方法sleep(),应该使用以下方式来调用:
```java
Thread.sleep(1000); // 使用类名调用静态方法
```
而不是:
```java
Thread thread = new Thread();
thread.sleep(1000); // 错误的调用方式,使用实例化对象调用静态方法
```
因此,如果你想在代码中使用Thread.sleep()来暂停执行,就需要使用类名Thread来调用静态方法,而不是创建一个Thread对象来调用它。
相关问题
Static member 'java.lang.String.join(java.lang.CharSequence, java.lang.CharSequence...)' accessed via instance reference
The error message "Static member 'java.lang.String.join(java.lang.CharSequence, java.lang.CharSequence...)' accessed via instance reference" occurs when you try to call the static method `join` on an instance of the `String` class instead of calling it on the class itself.
The `join` method is used to join a group of strings together with a delimiter. It takes two parameters: a delimiter and an array of strings. Here is an example of how to use it:
```
String[] words = {"hello", "world", "how", "are", "you"};
String joinedWords = String.join(" ", words);
System.out.println(joinedWords);
```
In this example, we create an array of strings called `words`, and then use the `join` method of the `String` class to join the strings together with a space delimiter.
If you see the error message "Static member 'java.lang.String.join(java.lang.CharSequence, java.lang.CharSequence...)' accessed via instance reference", it means that you are calling the `join` method on an instance of the `String` class, rather than on the class itself. To fix the error, make sure you call the method on the class, like this:
```
String[] words = {"hello", "world", "how", "are", "you"};
String joinedWords = String.join(" ", words);
System.out.println(joinedWords);
```
Note that in the corrected code, we are calling the `join` method on the `String` class itself, not on an instance of the `String` class.
java.lang.reflect.InvocationTargetException
`java.lang.reflect.InvocationTargetException` is a checked exception that occurs when a method is invoked and an exception is thrown by the invoked method. It is a subclass of `java.lang.Exception` and is thrown by the `java.lang.reflect.Method.invoke()` method.
The `InvocationTargetException` wraps the original exception that was thrown by the invoked method. This exception can be accessed using the `getCause()` method. The `InvocationTargetException` can occur for various reasons, including:
- The invoked method throws a checked exception that is not declared in the method signature.
- The invoked method throws an unchecked exception.
- The invoked method throws an error.
In general, the `InvocationTargetException` is a wrapper exception that provides information about the original exception that was thrown by the invoked method. It is commonly used in reflective code, where methods are invoked dynamically at runtime.
阅读全文