我有一个与“instanceof
”相关的练习,我不太清楚如何使用它。这就是我想出的:
for(int i = 4; i < 6; i++){
int availSupply = part[i].stockLevel+part[i].getAvailForAssembly();
if(availSupply instanceof Integer){
System.out.println("Total number of items that can be supplied for "+ part[i].getID()+"(" + part[i].getName() + ": "+ availSupply);
}
}
代码对我来说很好,但它出现了一个错误:
Multiple markers at this line
Incompatible conditional operand types int and Integer at: if(availSupply instanceof Integer){
我不知道我做错了什么,这是唯一出现的错误。
答案 0 :(得分:8)
您不能将instanceof
与基本类型的表达式一起使用,就像您在此处使用availSupply
一样。毕竟,int
不能是其他任何东西。
如果已经声明getAvailForAssembly()
返回int
,那么您根本不需要if
语句 - 只是无条件地执行正文。如果它返回Integer
,您应该使用:
Integer availSupply = ...;
if (availSupply != null) {
...
}
答案 1 :(得分:0)
此处int
是原始值,对象的instanceof
关键字检查属于您的案例中的类i,e Integer
。所以int
本身就是一个原始值不是instance
class
Integer
以下是使用instanceof
关键字的class InstanceofDemo {
public static void main(String[] args) {
Parent obj1 = new Parent();
Parent obj2 = new Child();
System.out.println("obj1 instanceof Parent: "
+ (obj1 instanceof Parent));
System.out.println("obj1 instanceof Child: "
+ (obj1 instanceof Child));
System.out.println("obj1 instanceof MyInterface: "
+ (obj1 instanceof MyInterface));
System.out.println("obj2 instanceof Parent: "
+ (obj2 instanceof Parent));
System.out.println("obj2 instanceof Child: "
+ (obj2 instanceof Child));
System.out.println("obj2 instanceof MyInterface: "
+ (obj2 instanceof MyInterface));
}
}
class Parent {}
class Child extends Parent implements MyInterface {}
interface MyInterface {}
关键字的基本摘要。
obj1 instanceof Parent: true
obj1 instanceof Child: false
obj1 instanceof MyInterface: false
obj2 instanceof Parent: true
obj2 instanceof Child: true
obj2 instanceof MyInterface: true
<强>输出:强>
instanceof
请仔细阅读此链接,以便更好地了解$string = "My name is StackOcerflow and I like programming, one more comma. Next sentance.";
$words = preg_split( "/( )/", $string );
print_r($words);
$length = 0;
foreach($words as $word){
$length += strlen($word);
}
$string_new = "";
$string_new2 = "";
$length_half = 0;
foreach($words as $word){
$length_half += strlen($word);
if($length_half >= ($length/2)){
$string_new2 .= $word . ' ';
}else{
$string_new .= $word . ' ';
}
}
echo '<br/><br/>';
echo 'Full=' . $string . '<br/>';
echo 'First=' . $string_new . '<br/>';
echo 'Second=' . $string_new2 . '<br/>';
echo 'First length=' . strlen($string_new) . '<br/>';
echo 'Second=' . strlen($string_new2) . '<br/>';
关键字:
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html
答案 2 :(得分:0)
您不能将instanceof
运算符与原始类型的变量(例如int
,boolean
和float
)一起使用,因为它们只能包含数字/名称已经告诉您的值(int
的整数,true
的{{1}}或false
的{{1}}以及boolean
的浮点数。)
类型为类的变量,可以与float
一起使用,因为类(通常)可以扩展。变量instanceof
也可能包含类Foo variable
的实例(例如,如果Bar
),因此您实际上可能需要Bar extends Foo
运算符。